我正在尝试写所有与我的数据库匹配关键字的tweet。我已经在tracker.rb中设置了以下内容
require 'rubygems'
require 'tweetstream'
TweetStream::Daemon.new('Bill Gates','money','Twitter Tracker').track('ladygaga') do |status|
Tweet.new(:content => status.text)
end但什么都没发生。我在这里做错什么了?
提前感谢
更新:--我把所有东西都放进了一个名为twitter.rake的.rake文件中,然后用$ rake scrap启动了恶魔
task :scrap => :environment do
desc "Run Twitter Scraper"
TweetStream::Client.new('TWITTER_USER','TWITTER_PASS').track('ladygaga') do |status|
Tweet.create(:user_id => status.user.id, :user_screen_name => status.user.screen_name, :user_profile_image_url => status.user.profile_image_url, :status_text => status.text, :status_id => status.id)
puts "[#{status.user.screen_name}] #{status.text}"
end
end发布于 2013-01-08 17:45:05
你是怎么称呼守护进程的?
您需要提供一个命令(开始/停止.)
例如:
rails runner "TweetStream::Daemon.new('tracker').track('ladygaga') { |status| do_something }" start这将在后台启动这项工作。
发布于 2013-09-25 19:04:54
第一种方法是最好的方法,您需要从命令行运行"deamon“,但是由于您希望使用rails和activerecord,所以需要将rails环境引导到脚本中。
你需要这样做:
#!/usr/bin/env ruby
# encoding: utf-8
ENV["RAILS_ENV"] ||= "development"
root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
require File.join(root, "config", "environment")
require 'tweetstream'
p "Initializing daemon..."
TweetStream.configure do |config|
config.consumer_key = 'your-consumer_key'
config.consumer_secret = 'your-consumer_secret'
config.oauth_token = 'your-oauth_token'
config.oauth_token_secret = 'your-oauth_token_secret'
config.auth_method = :oauth
end
terms = ['ladygaga']
daemon = TweetStream::Daemon.new('tracker',
:log_output => true,
:backtrace => true,
)
daemon.on_inited do
ActiveRecord::Base.connection.reconnect!
p "Listening..."
end
daemon.on_error do |message|
puts "on_error: #{message}"
end
daemon.on_reconnect do |timeout, retries|
puts "on_reconnect: #{timeout}, #{retries}"
end
daemon.on_limit do |discarded_count|
puts "on_limit: #{skip_count}"
end
daemon.track(terms) do |status|
# put here your model.create code!
# Tweet.create!( :uid => status.id, ... )
end要运行脚本,只需键入:
ruby scrip-name.rb run发布于 2011-05-29 15:39:51
我假设这是一个更大的rails应用程序的一部分。如果是这样的话,问题1就是如果Tweet.new是一个标准的activerecord对象,它将不会将任何东西持久化到数据库。第二,我不确定脚本是否一定会知道Tweet是否是一个activerecord,而不需要使用rails应用程序,可能包括environment.rb文件。
类似于:
ENV["RAILS_ENV"] ||= "production"
require File.dirname(__FILE__) + "/../../config/application"
Rails.application.require_environment!如果这样做不起作用,您可以尝试只包括活动记录,这里有一个问题和答案描述它:
https://stackoverflow.com/questions/6060178
复制相似问题