コンテンツにスキップ

Heroku

Slack BotをHeroku上で動かす

HUBOTを使ったSlack Bot作成メモで作ったSlack Botをローカル以外の環境で動かしたくなったのでHeroku上で動かせるようにしてみます。

あらかじめHerokuにSign upしておきます。

Heroku Toolbelt のインストール

HerokuのCLIツールであるHeroku Toolbeltをインストールします

今回はMacを使っているのでこちらからダウンロード&インストールしました

https://toolbelt.heroku.com/osx

$ heroku version
heroku-toolbelt/3.34.0 (x86_64-darwin10.8.0) ruby/1.9.3
You have no installed plugins.

コマンドラインからHerokuにログイン

HerokuにSign upしたときのIDとPasswordでコマンドライン上からHerokuにログインする

$ heroku login
Enter your Heroku credentials.
Email: sojiro@example.com
Password (typing will be hidden): 
Authentication successful.

hubotのディレクトリをGitHubにpush

HerokuにはGitHubを通じてデプロイするようなのでhubotのあるディレクトリをGitHubにpushしておく

$ cd ~/git/hubot/my_slack_bot/
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@github.com:your_name/slack_bot_repository  # 自分で用意したslack bot用のGitリポジトリ
$ git push origin master

Herokuにデプロイ

Herokuにアプリケーションを作る

このときstackにcedarを指定する。アプリケーションの名前は指定しないとHerokuが勝手に名前をつけてくれる。

$ heroku create --stack cedar
Creating random_name... done, stack is cedar-10
https://random_name.herokuapp.com/ | https://git.heroku.com/random_name.git
Git remote heroku added
updating...done. Updated to 3.35.0

ここまできたらいよいよデプロイ

$ git push heroku master
Counting objects: 16, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (16/16), 6.58 KiB | 0 bytes/s, done.
Total 16 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
...

Herokuに設定を追加

HerokuにHubotとSlackの設定を追加していく

ここではHUBOTを使ったSlack Bot作成メモで払い出されたものを指定する

# HUBOT_SLACK_TOKENの設定
$ heroku config:add HUBOT_SLACK_TOKEN=xxxx-123456789-abcdefghijklmnopqrstuvwxyz
Setting config vars and restarting random_name... done, v4
HUBOT_SLACK_TOKEN: xxxx-123456789-abcdefghijklmnopqrstuvwxyz

# SlackのTeam設定
$ heroku config:add HUBOT_SLACK_TEAM=your_team_name
Setting config vars and restarting random_name... done, v5
HUBOT_SLACK_TEAM: your_team_name

# Botの名前の設定
$ heroku config:add HUBOT_SLACK_BOTNAME=your_bot_name
Setting config vars and restarting random_name... done, v6
HUBOT_SLACK_BOTNAME: your_bot_name

# HerokuアプリのURL設定
$ heroku config:add HEROKU_URL=http://random_name.herokuapp.com
Setting config vars and restarting random_name... done, v7
HEROKU_URL: http://random_name.herokuapp.com

HerokuのWebプロセスの起動

最後にHerokuのWebプロセスを起動する

$ heroku ps:scale web=1
Scaling dynos... done, now running web at 1:1X.

SlackにBotが現れれば成功!

今回はRedisを使わなかったのでHerokuのaddon設定やクレジットカードの登録無しでいけました

参照

Ruby on Railsで初めてアプリを作ってみる #2 -Herokuのセットアップ-

Ruby on Railsのアプリケーション構築に適したPaaSであるHerokuのセットアップをする。

Herokuに必要なgemのインストール

Herokuで使用するDBであるPostgreSQLと通信するための pg とHerokuで画像やスタイルシートなどの静的アセットを提供するための rails_12factor を本番(production)環境にインストールするための内容をGemfileに追記する

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

production環境用のgemをインストールしないオプションをつけて bundle install を実行する。 これによりGemfile.lockが更新され、production環境に備えることができる。

$ bundle install --without production
Your bundle is complete!
Gems in the group production were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

ここまでできたらgitにcommitしておく。

$ git commit -a -m "Update Gemfile.lock for Heroku"

git commit-a は変更のあったファイルを自動で add するオプション。

herokuコマンドが使えるようにする

まずは以下のURLからHerokuにアカウント登録をする。

https://signup.heroku.com/identity

アカウント登録が完了したら heroku コマンドをインストールする。 今回はAWSのLinux環境へのインストールなので以下のURL( Heroku Toolbelt のStandalone)を参照して以下の手順を得る。

https://toolbelt.heroku.com/standalone

$ wget -qO- https://toolbelt.heroku.com/install.sh | sh
This script requires superuser access to install software.
You will be prompted for your password by sudo.
[sudo] password for sojiro: 
Add the Heroku CLI to your PATH using:
$ echo 'PATH="/usr/local/heroku/bin:$PATH"' >> ~/.profile
Installation complete

自動で sudo をつけて実行してくれる。インストールが完了したら出力にあるようにPATHを通す。

$ echo 'PATH="/usr/local/heroku/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
$ heroku version
heroku-toolbelt/3.15.2 (x86_64-linux) ruby/2.0.0

Herokuのセットアップ

heroku コマンドがインストールされたことを確認できたらコマンドラインからHerokuの認証を行う。

$ heroku login
Enter your Heroku credentials.
Email: your.account@email.com
Password (typing will be hidden): 
Your Heroku account does not have a public ssh key uploaded.
Could not find an existing public key at ~/.ssh/id_rsa.pub
Would you like to generate one? [Yn] Y
Generating new SSH public key.
Uploading SSH public key /home/user/.ssh/id_rsa.pub... done
Authentication successful.

認証が完了したらHerokuのセットアップをする

$ heroku create
Creating infinite-peak-4923... done, stack is cedar-14
https://infinite-peak-4923.herokuapp.com/ | git@heroku.com:infinite-peak-4923.git
Git remote heroku added

これでgitのremoteにherokuが追加される

$ git remote -v
heroku  git@heroku.com:infinite-peak-4923.git (fetch)
heroku  git@heroku.com:infinite-peak-4923.git (push)
origin  https://github.com/sojiro14/first_app.git (fetch)
origin  https://github.com/sojiro14/first_app.git (push)

Herokuへデプロイ

追加されたremoteに push をすればHerokuへのデプロイが完了

$ git push heroku master

https://infinite-peak-4923.herokuapp.com/

heroku create 時に出力された上記URL(アプリケーションごとに異なる)にアクセスするとHerokuにデプロイしたアプリケーションが確認できる。Rails 4.0ではこの時点で The page you were looking for doesn't exist. と表示されてしまう模様。

参照

Ruby on Rails チュートリアル