18

パラメータをメソッドに渡そうとしていますが、loginそのパラメータに基づいてベース URI を切り替えたいと考えています。

そのようです:

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

  ...

メソッドから呼び出したときにベース uri が設定されません。

4

3 に答える 3

19

HTTParty では、内部オプション ハッシュを設定するbase_uriクラスメソッドです。カスタムクラスメソッド内から動的に変更するにloginは、メソッドとして呼び出すだけです (変数のように割り当てるのではなく)。

たとえば、上記のコードを変更すると、これはbase_uri期待どおりに設定されます。

...
case game_name
  when "game1"
    # call it as a method
    self.base_uri "http://game1"
...

それが役に立てば幸い。

于 2012-03-08T11:29:05.547 に答える
10

まだコメントできないので、ここに Estanislau Trepat の回答の拡張があります。

すべての呼び出しbase_uriに対してを設定するには、対応するクラス メソッドを呼び出します。

self.base_uri "http://api.yourdomain.com"

少数の呼び出しのみを別の URIに送信し、状態エラー (元の URI に戻すのを忘れる) を回避する方法が必要な場合は、次のヘルパーを使用できます。

def self.for_uri(uri)
  current_uri = self.base_uri
  self.base_uri uri
  yield
  self.base_uri current_uri
end

上記のヘルパーを使用すると、次のような他の URI に対して特定の呼び出しを行うことができます。

for_uri('https://api.anotheruri.com') do
  # your httparty calls to another URI
end
于 2015-10-28T13:17:00.787 に答える