0

RESTHTTParty を使用してサードパーティ API のラッパーを作成しています。次のようなローカル モジュールへの呼び出しを使用して、サード パーティの API を呼び出せるようにしたいと考えています。

APIWrapper::APIObject::APIMethod

関数呼び出しを受け入れ、オブジェクトとメソッドをデコードしてサードパーティ API を呼び出す魔法の関数を APIWrapper 内に記述したいと思います。したがって、上記の呼び出しは次のようになります。

params = {
  'format' = 'json',
  'object' = api_object,
  'method' = api_method,
}

get(APIWrapper::BASE_URI, {:query => params})

呼び出されたメソッドに基づいて自動的に入力できるようにしたいので、実行できるようにしたいすべての API 呼び出しに対してメソッドを明示的に記述する必要はありませapi_objectん。api_methodではPHP、これは魔法の __get メソッドを使用して行われます。Rubyに同等のものはありますか?

4

1 に答える 1

1

これは間違いなく Ruby で実行できます。APIWrapperに実装する必要があります。これは、API メソッド部分を取得するためにconst_missing実装するオブジェクトを返します。method_missing

module APIWrapper
  def const_missing(const_name)
    anon_class = Class.new do
      def method_missing(name, *params, &block)
        params = {
          'format' = 'json',
          'object' = const_name.to_s,
          'method' = name.to_s,
        }
        get(APIWrapper::BASE_URI, {:query => params})
      end
    end
  end
end
于 2013-09-07T20:25:58.740 に答える