【问题标题】:Ruby - undefined method `extract_options!' : ArrayRuby - 未定义的方法“extract_options!” : 大批
【发布时间】:2012-12-14 07:28:38
【问题描述】:

在使用 TweetStream 运行以下示例时,我收到了错误提示。

tweets.rb

require 'tweetstream'

TweetStream.configure do |config|
  config.consumer_key       = '<CONSUMER KEY>'
  config.consumer_secret    = '<CONSUMER SECRET>'
  config.oauth_token        = '<OAUTH TOKEN>'
  config.oauth_token_secret = '<OAUTH TOKEN SECRET'
  config.auth_method        = :oauth
end

TweetStream::Client.new.track('ruby') do |status|
  puts "#{status.text}"
end

错误

$ ruby tweets.rb 
/home/amit/.rvm/gems/ruby-1.9.3-p194/gems/tweetstream-2.3.0/lib/tweetstream/client.rb:96:in `track': undefined method `extract_options!' for ["ruby"]:Array (NoMethodError)
        from tweets.rb:11:in `<main>'
    https://github.com/intridea/tweetstream

我错过了什么吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 tweetstream


    【解决方案1】:

    这是另一个解决方案:打开Array 类并在其上定义extract_options! 方法。

    添加以下代码:

    class Array
      def extract_options!
        last.is_a?(::Hash) ? pop : {}
      end unless defined? Array.new.extract_options!
    end
    

    tweets.rb 文件的开头或到一个单独的文件(这将 tweets.rb 文件中需要)。

    【讨论】:

    • 我喜欢这个解决方案。如果您不需要 ActiveSupport 用于其他任何事情,则包括 ActiveSupport 是不可行的。
    【解决方案2】:

    extract_options!ActiveSupport 方法。如果它不是 rails 应用程序,您需要安装它并包含在脚本中。

    【讨论】:

    • 谢谢。有效。实际上this commit message 阻止了我去探索 Rails 的其他地方。
    【解决方案3】:

    我来不及回答,但我认为这对像我这样的 ruby​​ 天真的程序员很有用。

    要包含像 extract_options! 这样的 ActiveSupport 方法,您需要包含 Active Support。

    需要'active_support'

    如果你想包含 ruby​​ gems,那么也包含 ruby​​gems。

    需要“红宝石”

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2015-10-11
      • 2016-06-30
      相关资源
      最近更新 更多