7even/vkontakte_api

Dynamic method calling

proton opened this issue · 1 comments

В 1.2 отвалился динамический вызов методов:

2.0.0p247 :049 > vk.photos
 => #<VkontakteApi::Namespace:0x000000091339c8 @name="photos", @previous_resolver=#<Hashie::Mash name=nil token="728de16c8494909187a16487c550e58e802b70c176278ffefb201c132f533a330e718296d572f511e2e8b">> 
2.0.0p247 :050 > vk.send('photos')
NoMethodError: undefined method `inject' for "photos":String
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/vkontakte_api-1.2/lib/vkontakte_api/utils.rb:9:in `flatten_arguments'
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/vkontakte_api-1.2/lib/vkontakte_api/api.rb:16:in `call'
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/vkontakte_api-1.2/lib/vkontakte_api/method.rb:13:in `call'
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/vkontakte_api-1.2/lib/vkontakte_api/resolver.rb:16:in `method_missing'
        from (irb):50
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/railties-3.2.14/lib/rails/commands/console.rb:47:in `start'
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/railties-3.2.14/lib/rails/commands/console.rb:8:in `start'
        from /home/proton/.rvm/gems/ruby-2.0.0-p247/gems/railties-3.2.14/lib/rails/commands.rb:41:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

В 1.1 это работало

Сейчас временно заменил send на method_missing

Метод #send теперь проходит через #method_missing, чтобы работали API-методы типа messages.send. Если очень нужно вызывать методы динамически, можно попробовать #public_send (или даже #__send__).