HerokuのSinatraでTwitterにつぶやく
過去記事をベースに、今回はHerokuのSinatraからTwitterに手動でつぶやく処理を書く。
RubyでTwitterのOAuth認証に必要なトークンを取得する HerokuでSinatraを使ってHello worldする HerokuアプリをGitHubにもプッシュする HerokuとGitHubの両方にプッシュする時の秘密にしたい値の扱い
Google App Engineの時に失敗した、twitterライブラリを使用する。 結果的に今回はうまくいった。完成形はこれだけど、今回のはあまり公開に向いていない作りなので、アップしてあるツイート部分の処理はコメントアウトしてある。
app.rbを編集
app.rb
を以下のように書き換える。ENVの値はこのやり方で作っておく。
require 'rubygems'
require 'sinatra'
require 'twitter'
before do
Twitter.configure do |config|
config.consumer_key = ENV['CONSUMER_KEY']
config.consumer_secret = ENV['CONSUMER_SECRET']
config.oauth_token = ENV['OAUTH_TOKEN']
config.oauth_token_secret = ENV['OAUTH_TOKEN_SECRET']
end
end
get '/' do
'HerokuでSinatraを使ってHello world!'
end
get '/hoge' do
ENV['HOGE']
end
get '/tweet' do
t = Time.now # 同一内容投稿エラーの防止用
Twitter.update("HerokuのSinatraからHello world! at #{t}")
"tweet complete"
end
tweet
メソッドを作って、http://heroku-hello-world.heroku.com/tweetにアクセスするとつぶやくようにする。
Gemfileを編集
twitterライブラリを使用するので、Gemfile
に追加する。
source :rubygems
gem 'sinatra'
gem 'twitter'
bundle install
してGemfile.lock
を生成する。
$ bundle install
デプロイ
commit
する。
$ git add .
$ git commit -a -m 'add tweet method'
Herokuにpush
する。
$ git push heroku master
$ heroku open
http://heroku-hello-world.heroku.com/tweetにアクセスすると「tweet complete」と表示され、Twitter側には「HerokuのSinatraからHello world! at Sat Jan 22 21:08:15 -0800 2011」のような感じでつぶやかれる。
オマケ
GitHubにpush
してタグを付ける。
$ git push origin master
$ git tag -a 0.5 -m 'blog update'
$ git push --tags
こうするとGitHub上でタグごとにダウンロードできるようになる。