Herokuのワーカプロセスは、crashした場合に自動的に再起動してくれるそうですので、EventMachineを使ったスクリプトを動かすのには最適です。たとえば、Twitterを監視したり、イベント・ドリブン、定期的に実施したい処理の場合にお勧めです。
また、今回EventMachineのスクリプト単体ではなく、Railsに組み込みました。理由は僕がRailsのフレームワークに慣れきって、RSpecのテスト書いたり、便利なgemを使いやすいからです。多分、生産性の高さと、Railsのオーバーヘッドとの兼ね合いだと思います。
🎳 前置き:プロジェクトを新規作成する場合
『Rails4 x heroku用のApplication Templateを作ってみた!』のコマンドでプロジェクトを作成するとEventMachineを使うかの質問が出るので、yes
と打っていただければ、自動的に次のコードが入ります。
今回はEventMachineの利用で一番多そうな、『Twitter Stream API』を例にしたソースコードの導入です。実際の利用では適宜変更してみてください!
🗽 Gemの導入・設定
Gemfileに以下を追加して、bundle install
を実行。
# EventMachine/Twitter Stream API |
😸 EventMachineのコード
メインのEventMachine
のソースコードは、lib/EventMachine/twitter_stream.rb
に置くことにします。
ちなみに1つのEventMachine内では、id基準でチェックするか、keyword基準でチェックするかのどちらか一方しかできないっぽいです。
require_relative '../../config/environment' |
🐠 Procfileの設定
Procfile
の設定はこちら。
worker: bundle exec ruby lib/eventmachine/twitter_stream.rb |
🎃 Twitterのキー情報の取得と環境変数への登録
まずは次のサイトでTwitterアプリケーションを登録してください。
(Sign in => アプリケーションの登録)
登録したら環境変数にTwitterキーを登録します。まずはローカルへのキー情報の登録です。
Gem「Figaro」を使っている場合は、config/application.yml
に次のコードを入力。
TWITTER_CONSUMER_KEY: xxxx |
🐰 Herokuへのデプロイ
では、Herokuにソースコードをデプロイ。
(このまえにソースはローカルでGitにコミットしておいてください)
heroku create test-app --stack cedar |
FigaroでTwitterのキー情報をHerokuの環境変数に登録。
rake figaro:heroku['test-app'] |
ワーカプロセスを起動!
heroku scale web=0 |
ちなみにプロセスはWeb orワーカが1つなら無料ですが、2つ以上のプロセスが起動していると有料になるので注意して使ってください。