2016-04-07 7 views
0

So habe ich 2 Dienste, die API-Anrufe machen, sie tun verschiedene Dinge, aber beide haben die gleichen httparty-Einstellungen an der Spitze der Klasse, was ist der beste Weg, um diese Einstellungen zu teilen? Vererbung oder einen anderen Codierungsmechanismus verwenden?Httparty - Sharing Werte über Klassen

z.B.

class FirstService 
    include HTTParty 
    format :json 
    base_uri: "url" 
    basic_auth 
    default_timeout 360 

und

class SecondService 
    include HTTParty 
    format :json 
    base_uri: "url" 
    basic_auth 
    default_timeout 360 

Kann ich eine Top-Level-Klasse erstellen und irgendwie diese Werte beide erben?

Antwort

0

Sie könnten das ja tun. Ich würde vorschlagen, das nur zu tun, wenn der Dienst eine Vererbung zwischen einander hat (Tier ist die logische Elternklasse von Katze und Hund, aber nicht von Katze und Auto). Ansonsten würde ich vorschlagen, ein Modul in beide enthalten:

module HTTPartyReady 
    include HTTParty 
    format :json 
    base_uri: "url" 
    basic_auth 
    default_timeout 360 
end 

class FirstService 
    include HTTPPartyReady 
end 
0

eine Datei in config/settings.yml wie folgt erstellen:

development: 
    base_uri: "url" 
    default_timeout 360 

test: 
    base_uri: "url" 
    default_timeout 360 

production: 
    base_uri: "url" 
    default_timeout 360 

Und dann in der App oder wo auch immer Sie diese Werte verwenden, Zugriff auf diese Werte mit:

Rails.application.settings.base_uri