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上でタグごとにダウンロードできるようになる。


GitHub でタグを打って tgz/zip アーカイブ をダウンロードできるようにする:Goodpic