Машина событий с em http gem не может загрузить промежуточное ПО oauth

Я пытаюсь заставить потоковую торговлю ценами акций работать с использованием TradeKing API

https://developers.tradeking.com/documentation/ruby-streaming

или скопированные и вставленные коды ниже

require 'em-http'
require 'em-http/middleware/oauth'

credentials = {
  :consumer_key        => "<CONSUMER_KEY>",
  :consumer_secret     => "<CONSUMER_SECRET>",
  :access_token        => "<ACCESS_TOKEN>",
  :access_token_secret => "<ACCESS_TOKEN_SECRET>"
}

EM.run do
  conn = EventMachine::HttpRequest.new('https://stream.tradeking.com/v1/market/quotes.json?symbols=F')
  conn.use EventMachine::Middleware::OAuth, credentials

  http = conn.get
  http.stream { |chunk| puts chunk }

  http.errback do
    EM.stop
  end

  trap("INT")  { http.close; EM.stop }
  trap("TERM") { http.close; EM.stop }
end

После получения ключа, секрета и токена я создал простое приложение на Ruby для игры с кодами, но я получаю сообщение об ошибке, в котором говорится, что он не может загрузить

require 'em-http/middleware/oauth'

Если я отключу это, код EventMachine::Middleware::OAuth не будет работать.

Вот сообщение об ошибке:

    c:/tools/ruby215/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/
kernel_require.rb:54:in `require': cannot load such file --
simple_oauth (LoadError)
        from c:/tools/ruby215/lib/ruby/site_ruby/2.1.0/rubyg
ems/core_ext/kernel_require.rb:54:in `require'
        from c:/tools/ruby215/lib/ruby/gems/2.1.0/gems/em-ht
tp-request-1.1.2/lib/em-http/middleware/oauth.rb:1:in `<top
(required)>'
        from c:/tools/ruby215/lib/ruby/site_ruby/2.1.0/rubyg
ems/core_ext/kernel_require.rb:54:in `require'
        from c:/tools/ruby215/lib/ruby/site_ruby/2.1.0/rubyg
ems/core_ext/kernel_require.rb:54:in `require'
        from app.rb:2:in `<main>'

Я новичок в машине событий и em-http gem. Я просмотрел их документацию, но не смог найти информацию об этой ошибке. Может кто-нибудь помочь мне понять, почему файл не может загрузиться?

1 ответ

ОК, так что я решил это сам. Я не работал с ванильным Ruby некоторое время, поэтому я немного начал читать сообщения об ошибках. Ошибка говорит о том, что он не может загрузить файл и указывает на строку 1 oauth.rb файл, который находится в em-http-request драгоценный камень. Я посмотрел в файл, и первая строка говорит require simple_oauth который я еще не установил. Я бы подумал установить em-http-request драгоценный камень установит simple_oauth как зависимость, но я думаю, что нет (хорошо, em-http-запрос не обновлялся в течение нескольких лет).

Решение этой проблемы заключается в установке simple_oauth драгоценный камень.

gem install simple_oauth

и запустите эти коды снова, и это должно работать.

https://rubygems.org/gems/simple_oauth/versions/0.3.1

https://github.com/laserlemon/simple_oauth

Я надеюсь, что это поможет любому, у кого возникла такая же проблема (поскольку документ TradeKing API не так ясен).

Другие вопросы по тегам