Ruby
Heroku
初心者
slackbot

Rubyで書いたSlack botのスクリプトをHerokuにアップして常時起動させる


はじめに

前回作成した、Amazonランキングを表示してくれるBotを、都度ターミナルからRubyを実行させるのではなく、常時起動させていきます。そのためにアプリをHerokuにアップロードしていくプロセスを説明していきます。


大まかな流れ


  • Heroku Toolbeltのインストール

  • Gemfileの作成

  • Procfileの作成

  • Herokuにアプリをアップロードする

  • Herokuにて常時スクリプトを実行させる


Heroku Toolbeltのインストール

下記のコマンドでインストール出来ます。

$ brew tap heroku/brew && brew install heroku

必要に応じてHerokuの公式記事も参考にしてください。


Gemfileの作成

通常、Ruby単体で開発する場合、Gemfileは不要です。しかし今回は、RubyアプリケーションをHerokuにコンパイルする際に必要な buildpack をインストールします。buildpackインストール時に、Gemfileを参照した上で必要なファイルをインストールするため、Gemfileの作成は必須です。


# Gemfile
source 'https://rubygems.org'
ruby '2.6.3'

当初Ruby2.3.0で開発をしていたのですが、Herokuにデプロイする際、Rubyのバージョンがサポート外であったため、エラーが起きたので、こちらの記事を参考に、Rubyは最新版にアップデートさせました。


Procfileの作成

また、今回はWorker Dynoにてバックグラウンド処理を回すので、フォルダ内にProcfileを作成し、Worker Dynoで行う処理を下記のように宣言します。

worker: bundle exec ruby ruby_bot.rb


Herokuにアプリをアップロードする

続いてHerokuにデータをアップロードします。

下記のコマンドを順番に叩きます。

$ git init

$ git commit -m "init commit"
$ heroku create
$ heroku buildpacks:set heroku/ruby -a (アプリ名)
$ git push heroku master

4つ目のコマンドにて、rubyのbuildpackをインストールします。(アプリ名)の部分は、$heroku create で作成された、アプリ名を入れます。


GitとHerokuを連携させる

Herokuでアプリが立ち上がった所で、GitとHerokuを連携させると便利です。

スクリーンショット 2019-05-12 10.22.06.png

上記のように、繋込みをすると、GitのMasterにPushした内容が、Herokuに自動で反映されます。


Herokuにて常時スクリプトを実行させる

最後に、今回の作成したSlack Botを常時起動させておくために、Worker Dynoを起動させる必要があります。先程Procfileで宣言していたため、ResourceタブにWorkerが表示されているので、こちらをONにして、Confirmします。

スクリーンショット 2019-05-12 11.02.51.png


最後に

ターミナルからRubyファイルを実行させなければ、オフラインであったBotが、今回の作業を経て常時オンラインに変わりました!

スクリーンショット 2019-05-12 15.46.10.png

Procfileの記載に誤りがあったり、Gemfileの頭文字が小文字になっているという初歩的なミスをしてしまい、buildpackが正常にインストール出来ずに時間を溶かしてしまいました。今後はApp化も進めていければと思っております。


参考記事