0

私はおそらく基本的な Q を持っていますが、セットアップが複雑に見えます。いくつかのクラスを持つモジュールがあります。1 つのクラスには、API 呼び出しのメソッドが含まれています。他のクラスはサーバーを記述します。たとえば、開発にはその属性があります。サーバー クラスは、すべての API 呼び出しを含むクラスを継承します。サーバー クラスのインスタンスを使用してこれらのメソッドの 1 つを使用し、それに EventMachine メソッドを適用します。サーバー クラスのサブセットを次に示します。

 class PulseDev < ApiMethods
   def base_uri
    "http://myserver.com/api"
   end
 end

メソッド クラスのアクション:

 Class ApiMethods
   def get_json_api_post_response(url, post_obj={})
     http = EM::Synchrony.sync EventMachine::HttpRequest.new(self.base_uri+"#{url}").post(:body => post_obj)
     process_response self.class.post(url, :body => post_obj).body
   end

       def process_response(result)
         response = ActiveSupport::JSON.decode(result)
           if response["code"].to_i == 200
             ToolResult.new(true, response["result"], 200)
           else
             ToolResult.new(false, response["result"], response["code"])
           end
         end
        end

 Class ToolResult < Struct.new(:success, :result, :code)
 end

そして、コントローラーでの私の呼び出し:

 http = ApiMethods::Dev.new.get_json_api_post_response('/handshake', @j)

OK、私のエラーはApiMethods::PulseDev:Class のメソッド「post」が未定義 で、get_json_api_post_response メソッドの投稿を指しています。

私の質問は: ApiMethods::Dev のコンテキスト内にあることがわかります。これが self.base_uri が機能する理由ですが、その process_response メソッド内で投稿を処理して EventMachine に関連付けるにはどうすればよいですか? 私が見ていないメソッドチェーンについて何かありますか? エラー出力で、http が EventMachine オブジェクトを表示していることを確認できるため、新しいメソッドが機能しているように見えます。時間をありがとう、サム

4

1 に答える 1