2017年12月7日木曜日

slack-ruby-bot で作成したボットを heroku にデプロイしてみる

概要

前回まででイベント API と普通のボットの開発を行いました
これまでは localhost で動作させていましたが永続的に稼働させたい場合はサーバが必要になります
Heroku 上で動かすことができたので今回はその方法を紹介したいと思います

環境

  • macOS X 10.13.1
  • ruby 2.4.1p111
  • slack-ruby-bot 0.10.5

ボットスクリプト

前回から少し改良だけ完了しましょう
トークン情報を環境変数で設定できるように修正します

require 'slack-ruby-bot'

server = SlackRubyBot::Server.new(
  token: ENV["TOKEN"],
  hook_handlers: {
    message: [->(client, data) { puts "メッセージを受信しました" }]
  }
)
server.run

Gemfile の作成は前回通り行っておきましょう
これで OK です

heroku 上にアプリを作成する

コマンドでも画面からでも OK です
アプリを作成しましょう

  • git init
  • git commit -m "first commit"
  • heroku login
  • heroku git:remote -a test-bot

今回は test-bot というアプリを作成しました
とりあえず git リモートに heroku を追加するところまでやりましましょう

Procfile を作成する

今回の肝です
Procfile に heroku 上でボットを動作させるためのコマンドを記述します

  • vim Procfile
bot: bundle exec ruby bot.rb

作成したらコミットしましょう

  • git commit -m "add Procfile"

デプロイする

では heroku 上にコードや設定ファイルをデプロイしましょう

  • git push heroku master

で push したらトークン用の環境変数を設定します

  • heroku config set TOKEN=xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx

web アプリではないので push しただけではデプロイされません
scale コマンドがあるのでそれでデプロイします

  • heroku ps:scale bot=1

これでボットが起動するはずです
チャネルに話かけて heroku 上にデプロイしたボットから返事があるか確認してみましょう

最後に

slack-ruby-bot で作成したボットを heroku 上で起動させてみました
他にもコンテナを使うなどいろいろと方法はありますが今回は Procfile を使った方法を紹介しました

0 件のコメント:

コメントを投稿