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"
endtweetメソッドを作って、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 openhttp://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上でタグごとにダウンロードできるようになる。