2

我正在使用 Rails 3.2 的 TweetStream gem 和 ruby​​ 1.9.3 作为后台进程以在推文被拉入时运行代码。我已经使用 rails runner 让它工作,但现在我想将它移动到 heroku,所以我已将其设置为 rake 任务。该过程似乎可以正确启动,但是当它收到一条推文时,直到我 ctrl-c kill foreman 之前什么都没有发生,之后我立即看到了当时应该注册的推文的积压。知道为什么会发生这种情况吗?是什么阻碍了它们在正常操作期间被处理?

require 'tweetstream'

namespace :jobs do
desc "Workers"
  task :tweetstream => :environment do  

    TweetStream.configure do |config|
        config.consumer_key = ENV["TWITTER_CONSUMER_KEY"]
        config.consumer_secret = ENV["TWITTER_CONSUMER_SECRET"]
        config.oauth_token = ENV["TWITTER_OAUTH_TOKEN"]
        config.oauth_token_secret = ENV["TWITTER_OAUTH_TOKEN_SECRET"]
        config.auth_method = :oauth
    end     
    TweetStream::Client.new().userstream do |status|
        puts "Received tweet: #{status[:text]}"
        #exec('ruby ./script/tweetstream.rb') (what this would normally be)
    end

结束结束

档案

web: bundle exec rails server -p $PORT
tweetstream: bundle exec rake jobs:tweetstream

输出:

 $ foreman start
 01:58:14 web.1         | started with pid 36088
 01:58:14 tweetstream.1 | started with pid 36089
 01:58:24 web.1         | [2013-12-22 01:58:24] INFO  WEBrick 1.3.1
 01:58:24 web.1         | [2013-12-22 01:58:24] INFO  ruby 1.9.3 (2013-06-27) [x86_64-    darwin12.3.0]
 01:58:24 web.1         | [2013-12-22 01:58:24] INFO  WEBrick::HTTPServer#start: pid=36088 port=5000
 ^CSIGINT received
 01:59:17 system        | sending SIGTERM to all processes
 SIGTERM received
 01:59:17 web.1         | [2013-12-22 01:59:17] INFO  going to shutdown ...
 01:59:17 tweetstream.1 | rake aborted!
 01:59:17 web.1         | [2013-12-22 01:59:17] INFO  WEBrick::HTTPServer#start done.
 01:59:17 tweetstream.1 | /Users/patrickmarx/.rvm/gems/ruby-1.9.3-p448/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'
 01:59:17 tweetstream.1 | /Users/patrickmarx/.rvm/gems/ruby-1.9.3-p448/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'
 01:59:17 tweetstream.1 | /Users/patrickmarx/.rvm/gems/ruby-1.9.3-p448/gems/tweetstream-2.5.0/lib/tweetstream/client.rb:388:in `start'
 01:59:17 tweetstream.1 | /Users/patrickmarx/.rvm/gems/ruby-1.9.3-p448/gems/tweetstream-2.5.0/lib/tweetstream/client.rb:138:in `userstream'
 01:59:17 tweetstream.1 | /Users/patrickmarx/bridgeproject/src/website/bridgeproject_website/lib/tasks/tweetstream.rake:14:in `block (2 levels) in <top (required)>'
 01:59:17 tweetstream.1 | Tasks: TOP => jobs:tweetstream
 01:59:17 tweetstream.1 | (See full trace by running task with --trace)
 01:59:17 web.1         | => Booting WEBrick
 01:59:17 web.1         | => Rails 3.2.14 application starting in development on http://0.0.0.0:5000
 01:59:17 web.1         | => Call with -d to detach
 01:59:17 web.1         | => Ctrl-C to shutdown server
 01:59:17 web.1         | Exiting
 01:59:17 tweetstream.1 | Received tweet: deeeeeeez
 01:59:17 tweetstream.1 | Received tweet: nutz
 01:59:17 tweetstream.1 | Received tweet: are
 01:59:17 tweetstream.1 | exited with code 1
 01:59:17 web.1         | exited with code 0
4

0 回答 0