Un pattern classico: il tuo backend interroga un'API pubblica, salva e arricchisce i dati, e li ri-espone in un formato migliore. È il cuore di un progetto come Launch Tracker.

require "faraday"
require "json"

class LaunchLibrary
  BASE = "https://ll.thespacedevs.com/2.2.0"

  def self.upcoming
    res = Faraday.get("#{BASE}/launch/upcoming/", { limit: 20 })
    JSON.parse(res.body)["results"].map do |l|
      { name: l["name"], provider: l.dig("launch_service_provider", "name"),
        net: l["net"] }
    end
  end
end

Interroghi la fonte con Faraday, ne estrai solo i campi che ti servono con dig (che non esplode sulle chiavi mancanti), e li normalizzi.

In produzione: fai girare questa chiamata in un job in background e salva i risultati in tabella, così i tuoi utenti leggono dal tuo database veloce, non dall'API lenta di qualcun altro.