0

次の Ruby スクリプトを実行すると、次のエラーが発生し続けます。誰かがこれを修正するのを手伝ってくれるなら、それは大歓迎です。API キーなどの機密データはすべて削除しました。

コード:

#!/usr/bin/env ruby
require "tweetstream"
require "mongo"
require "time"

TweetStream.configure do |config|
  config.consumer_key       = 'KEY'
  config.consumer_secret    = 'SECRET'
  config.oauth_token        = 'TOKEN'
  config.oauth_token_secret = 'TOKEN_SECRET'
  config.auth_method        = :oauth
end

db = Mongo::Connection.new("ds045037.mongolab.com", 45037).db("tweets")
auth = db.authenticate("DB_USERNAME", "DB_PASSWORD")
tweets = db.collection("tweetdata")

TweetStream::Daemon.new("TWITTER_USERNAME", "TWITTER_PASSWORD").track("TERM") do |status|
  # Do things when nothing's wrong
  data = {"created_at" => Time.parse(status.created_at), "text" => status.text, "geo" => status.geo, "coordinates" => status.coordinates, "id" => status.id, "id_str" => status.id_str}
  tweets.insert({"data" => data});
end

スクリプトを開始するコマンド:

ruby tweetscrape.rb

ルビーのバージョン:

ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux]

ruby -c tweetscrape.rb が生成するもの:

Syntax OK

エラーメッセージ:

/usr/local/rvm/gems/ruby-1.9.3-p429/gems/daemons-1.1.9/lib/daemons.rb:184:in `[]=': can't convert Symbol into Integer (TypeError)
    from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/daemons-1.1.9/lib/daemons.rb:184:in `run_proc'
    from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/tweetstream-2.5.0/lib/tweetstream/daemon.rb:48:in `start'
    from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/tweetstream-2.5.0/lib/tweetstream/client.rb:131:in `filter'
    from /usr/local/rvm/gems/ruby-1.9.3-p429/gems/tweetstream-2.5.0/lib/tweetstream/client.rb:98:in `track'
    from tweetscrape.rb:19:in `<main>'

編集:以下を使用してもエラーは発生しませんが、mongodb には何も入力されません:

#!/usr/bin/env ruby
require "tweetstream"
require "mongo"
require "time"

TweetStream.configure do |config|
  config.consumer_key       = 'gfdsgfdsgfdsgfdsgfdsgfds'
  config.consumer_secret    = 'gfsdgfdsgfdsgfdsgfsdgfd'
  config.oauth_token        = 'gfdgfdsgfsdgfdsgfsdgf'
  config.oauth_token_secret = 'hsgfsdgfsdgfsdgfds'
  config.auth_method        = :oauth
end

db = Mongo::Connection.new("ds045037.mongolab.com", 45037).db("tweets")
auth = db.authenticate("gfsdgfdsgfsd", "gfdsgfdsgfdsgfsd")
tweets = db.collection("tweetdata")

TweetStream::Client.new.track('TERM') do |status|
  puts status.text
  data = {"created_at" => Time.parse(status.created_at), "text" => status.text, "geo" => status.geo, "coordinates" => status.coordinates, "id" => status.id, "id_str" => status.id_str}
  tweets.insert({"data" => data})
end

ツイートはプットを通じて画面に表示されますが...

4

1 に答える 1