学習記録③「heroku + sinatraでTwitterBOTを喋らせる」
やること
題名の通り、herokuを使ってTwitterBOTを作成します。
取り上げるのは現在時刻をPostするだけのBOTですが、herokuで環境をこさえておけば、今後複雑な処理を実装するときなんかに重宝するのではないかと思います。ローカルでだけ動くものを作っても面白くないですもんね。
必要なgemのインストール
gem install heroku sinatra bundler get-twitter-oauth-token twitter_oauth
とにかくインストールしましょう。
プログラミング
今回はsinatraを使うので、ファイル構成は以下のように設定します。
.git app.rb Gemfile config.ru tweet.rb
それぞれのソースは以下のとおりです。
Gemfile
source :rubygems gem 'sinatra' gem 'twitter' gem 'twitter_oauth'
config.ru
require './app.rb' run Sinatra::Application
app.rb
require 'rubygems' require 'sinatra' require './tweet.rb' get '/' do 'running' end get '/tweet' do Tweet.new.tweet end
tweet.rb
require 'rubygems' require 'twitter_oauth' require 'twitter' class Tweet def tweet t = TwitterOAuth::Client.new({ :consumer_key=>'取得した値を入力する', :consumer_secret=>'取得した値を入力する', :token=>'取得した値を入力する', :secret=>'取得した値を入力する' }) t.update "#{Time.now}" end end
'取得した値を入力する'には、RubyとOAuthを使ったTwitter Botの作成(環境構築編)を参照してください。私も勉強記録①で参考にさせて頂いています。
herokuにアプリを新規作成
heroku上にアプリを作成。たったこれだけです。簡単です。
heroku create testtesttesttest3333(私が設定したアプリケーション名)
SSHキーがないって怒られたら以下のコマンドを試してみてください。
ssh-keygen -t rsa -C "YOUR_EMAIL_ADDRESS@example.com"
SSHキーを再発行して登録してもうまくいかない場合は、$HOME/.ssh/config内に
Host heroku.com PreferredAuthentications publickey IdentityFile ~/.ssh/YOUR_SSH_KEY
と、表記してみてください。あるいはYOUR_SSH_KEYに意図しない表記があった場合は記述を改めてください。続・$HOME/.ssh/configを活用していますか?が参考になります。高度な設定は真似できてませんが、githubとherokuのSSH鍵を共存させるのに使っています。
公開するために
bundle installして公開の準備を整えます。ソースを格納してるディレクトリで以下のコードを実行してください。
$ bundle install
Gemfile.lockが生成されたら成功です。いよいよ公開しますよ。
.git app.rb Gemfile Gemfile.lock config.ru tweet.rb
ディレクトリがこんな感じになればOK
gitを使ったherokuにpush
$ git add . $ git commit コメントを記入して抜ける $ git push heroku master
これでOK。試しに「$ heroku open」でアプリケーションを開いてください。画面に「running」と表示されればばOKです。そこで「http://testtesttest3333.heroku.com/tweet」と入力すれば、BOTが現在の時刻をつぶやきます。画面はエラーのように映りますが、遷移先の画面を記述していないので今回はスルーしてください。
こんな感じです。
いかがでしたでしょうか。
かなり簡略化しているので、いろいろと不明な点もあるかと思います。気になった方や間違いを指摘してくれる素敵な御仁がおりましたら是非是非からんであげてください。
今後はheroku + sinatraで動くものをつくっていきます。ご期待。