├── Gemfile ├── config.ru ├── Rakefile ├── README.md ├── Gemfile.lock └── twittah.rb /Gemfile: -------------------------------------------------------------------------------- 1 | source :rubygems 2 | 3 | gem 'tweetstream' 4 | gem 'rack' 5 | gem 'rake' 6 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | require 'bundler/setup' 3 | require 'rack/lobster' 4 | 5 | run Rack::Lobster.new 6 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | require 'bundler/setup' 3 | 4 | namespace :jobs do 5 | desc "Heroku worker" 6 | task :work do 7 | exec('ruby ./twittah.rb run') 8 | end 9 | end 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Tweetstream Daemon on Heroku 2 | ============================ 3 | 4 | Sample app for using Tweetstream daemon on heroku. 5 | 6 | Deploying 7 | --------- 8 | 9 | $ heroku create 10 | $ heroku config:add TWITTER_USERNAME=foo TWITTER_PASSWORD=password 11 | $ heroku workers 1 12 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: http://rubygems.org/ 3 | specs: 4 | daemons (1.1.3) 5 | eventmachine (0.12.10) 6 | rack (1.2.2) 7 | rake (0.8.7) 8 | simple_oauth (0.1.4) 9 | tweetstream (1.0.4) 10 | daemons 11 | twitter-stream 12 | twitter-stream (0.1.13) 13 | eventmachine (~> 0.12.8) 14 | simple_oauth (~> 0.1.4) 15 | 16 | PLATFORMS 17 | ruby 18 | 19 | DEPENDENCIES 20 | rack 21 | rake 22 | tweetstream 23 | -------------------------------------------------------------------------------- /twittah.rb: -------------------------------------------------------------------------------- 1 | require 'rubygems' 2 | require 'bundler/setup' 3 | require 'tweetstream' 4 | 5 | # need to stop pidfile creation on heroku (read only file-system) 6 | class TweetStream::Daemon 7 | def start(path, query_parameters = {}, &block) #:nodoc: 8 | # Because of a change in Ruvy 1.8.7 patchlevel 249, you cannot call anymore 9 | # super inside a block. So I assign to a variable the base class method before 10 | # the Daemons block begins. 11 | startmethod = super.start 12 | Daemons.run_proc(@app_name || 'tweetstream', :multiple => true, :no_pidfiles => true) do 13 | startmethod(path, query_parameters, &block) 14 | end 15 | end 16 | end 17 | 18 | TweetStream::Daemon.new(ENV['TWITTER_USERNAME'], ENV['TWITTER_PASSWORD']).track('OH', 'twitpic', 'http') do |status| 19 | puts status.text 20 | end 21 | --------------------------------------------------------------------------------