Машина событий с 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 не так ясен).