これと同じ問題だった。
http://d.hatena.ne.jp/hokaccha/20130725/1374760838
bubble-wrap-httpのソースを読むと、callで呼ぶようになってるのでたぶんこれが原因。
https://github.com/rubymotion/BubbleWrap-HTTP/blob/master/motion/http/query.rb#L397
じゃあどうするか。
取り敢えずは以下のようにデリゲート用メソッドを加える形で解決しました。
class SpotSearch
attr_accessor :delegate
def initialize(attributes = {})
end
def find(keyword)
# ... urlとかpayloadとか色々指定済みということで ...
BW::HTTP.get(url, payload: payload) do |response|
@delegate.call(response) if @delegate
end
end
end
search = SpotSearch.new
search.delegate = Proc.new {|response|
puts response # -> ちゃんと動く
}
search.find('銀座 カフェ')
最終的にはもっとスマートにメソッドを登録、呼び出しができればいいのだと思う。
色々ハマったけど、おかげでブロックとかProcとか少し理解できました。