LoginSignup
6
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-05-12

はじめに

前回作成した、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化も進めていければと思っております。

参考記事

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4