#はじめに
前回作成した、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を連携させると便利です。
上記のように、繋込みをすると、GitのMasterにPushした内容が、Herokuに自動で反映されます。
Herokuにて常時スクリプトを実行させる
最後に、今回の作成したSlack Botを常時起動させておくために、Worker Dynoを起動させる必要があります。先程Procfileで宣言していたため、ResourceタブにWorkerが表示されているので、こちらをONにして、Confirmします。
#最後に
ターミナルからRubyファイルを実行させなければ、オフラインであったBotが、今回の作業を経て常時オンラインに変わりました!
Procfileの記載に誤りがあったり、Gemfileの頭文字が小文字になっているという初歩的なミスをしてしまい、buildpackが正常にインストール出来ずに時間を溶かしてしまいました。今後はApp化も進めていければと思っております。
#参考記事