So wechseln Sie base_uri mit httparty
Frage
Ich versuche, einen Parameter an a zu übergeben login
Methode und ich möchte die Basis-URI basierend auf diesem Parameter ändern.
Etwa so:
class Managementdb
include HTTParty
def self.login(game_name)
case game_name
when "game1"
self.base_uri = "http://game1"
when "game2"
self.base_uri = "http://game2"
when "game3"
self.base_uri = "http://game3"
end
response = self.get("/login")
if response.success?
@authToken = response["authToken"]
else
# this just raises the net/http response that was raised
raise response.response
end
end
...
Die Basis-URI wird nicht festgelegt, wenn ich sie über eine Methode aufrufe. Wie bringe ich das zum Laufen?
Lösung
In HTTParty, base_uri
ist ein Klassenmethode Dadurch wird ein interner Options-Hash festgelegt.Um es dynamisch innerhalb Ihrer benutzerdefinierten Klassenmethode zu ändern login
Sie können es einfach als Methode aufrufen (und nicht zuweisen, als wäre es eine Variable).
Wenn Sie beispielsweise Ihren Code oben ändern, sollte dies festgelegt werden base_uri
wie erwartet:
...
case game_name
when "game1"
# call it as a method
self.base_uri "http://game1"
...
Ich hoffe es hilft.
Andere Tipps
Ich kann mich noch nicht kommentieren, also hier ist eine Erweiterung der Antwort von Estanislau Trepat.
So legen Sie den generationspoDiCETAGCODE für
Wenn Sie eine Möglichkeit haben,
Mit dem obigen Helfer können Sie bestimmte Anrufe an andere Uris wie folgt vornehmen: generasacodicetagpre.
Ich bin nicht sicher, dass es implementiert wurde, wenn diese Frage zuerst gefragt wurde, aber wenn Sie den generationspflichtigen oder per-Instanz-Basis auf einer Basis oder per-Instanz-Basis einstellen oder überschreiben möchten, httparty-Anforderungsmethoden (: GET,: post usw.) Optionen akzeptieren , um Klassenoptionen zu überschreiben.
Also für Op-Beispiel könnte es so etwas aussehen: generasacodicetagpre.
Aufruf der Klassenmethode dynamisch, wie in einigen der anderen Antworten vorgeschlagen, ändert das Base_uri für alle -Arts, das wahrscheinlich nicht das ist, was Sie möchten.Es ist sicherlich nicht fadensicher.