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?

War es hilfreich?

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 alle Ihre Anrufe auf, rufen Sie die entsprechende Klasse an: generasacodicetagpre.

Wenn Sie eine Möglichkeit haben, nur ein paar Anrufe an einen anderen URI zu senden und staatliche Fehler zu vermeiden (Vergessen, auf den ursprünglichen URI zurückzukehren), können Sie den folgenden Helfer verwenden:

generasacodicetagpre.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top