使用em http gem的事件机器无法加载中间件oauth

时间:2015-10-27 18:43:59

标签: ruby oauth middleware eventmachine em-http-request

我正在尝试使用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 个答案:

答案 0 :(得分:0)

好的,所以我自己解决了这个问题。我有一段时间没有和vanilla Ruby一起工作过,所以我阅读错误消息时有点生疏。该错误表示它无法加载文件并指向g = sns.factorplot(x="DaysIn", y='value', hue="OTU_id", col='GroupUID', data=long_df, sharex=False, sharey=False) gem中oauth.rb文件的第1行。我查看了该文件,第一行显示em-http-request我尚未安装它。我认为安装require simple_oauth gem会安装em-http-request作为依赖项,但我猜不是(好吧,em-http-request已经好几年没有更新了)。

此问题的解决方法是安装simple_oauth gem。

simple_oauth

再次运行这些代码,它应该可以工作。

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

https://github.com/laserlemon/simple_oauth

我希望这可以帮助任何遇到同样问题的人(因为TradeKing API doc并不那么明确)。