一部のデータをブロックとして外部 API に渡そうとしています。追加のパラメーターを受け入れるように調整するのは面倒です。もしそうならjavascript
、私はそれを次のようにするかもしれません:
var callback = function() {
// do something
}
callback['__someData'] = options;
someExternalAPI(callback);
これはRubyで可能ですか?または、データをブロックに関連付けるにはどうすればよいですか?
質問の編集が正しかったかどうかはわかりません。まず、可能であれば、具体的にいくつかのデータをブロックと共に渡したいと思います。かどうかはわかりませんが。おそらくそれを行う唯一の方法ruby
は、いくつかのデータをブロックとして渡すことです。
さらに、ここにいくつかの有用な情報があるかもしれません。
わかりました、全体像を示すことはおそらく理にかなっています。私はwebmock
自分のニーズに適応しようとしています。POST
リクエストのパラメーター (または のGET
) が指定された基準に一致するかどうかをチェックする関数があります。
def check_params params, options
options.all? do |k,v|
return true unless k.is_a? String
case v
when Hash
return false unless params[k]
int_methods = ['<', '<=', '>', '>=']
v1 = int_methods.include?(v.first[0]) ? params[k].to_i : params[k]
v2 = int_methods.include?(v.first[0]) \
? v.first[1].to_i : v.first[1].to_s
v1.send(v.first[0], v2)
when TrueClass, FalseClass
v ^ ! params.key?(k)
else
params[k] == v.to_s
end
end
end
完璧ではありませんが、今のところ、私の特定のニーズには十分です。私はそれを次のように呼んでいます:
stub_request(:post, 'http://example.com/')
.with { |request|
check_params Rack::Utils.parse_query(request.body), options
}
そして問題は、一般的に、条件を出力する賢明な方法が見当たらないということwith block
です。options
しかし、私の特定のケースでは、ハッシュを出力するだけです。そしてこれの代わりに:
registered request stubs:
stub_request(:post, "http://example.com")
これを持っている:
stub_request(:post, "http://example.com").
with(block: {"year"=>2015})
これが私がやろうとしていることです。