概要
前回は、LINEのMessagingAPIを用いてechoBotを作成しました。
https://qiita.com/shizu9d/items/2bd2618409c9e5c93e0f
コードを編集した場合、Herokuにデプロイしなくては反映されないので、
ローカル環境で動かすことで、デバック等を容易にすることができます。
環境
・Ruby 2.6.5
・Rails 6.0.3.2
・PostgreSQL
・Heroku
ngrok
ngrokを使用することでローカルで起動中のwebサーバーを簡単に外部公開できるようになります。
デプロイをせずに、開発環境でBotを動かせるようになります!
ngrokのインストール
$ brew install ngrok
もし上記でインストールできない場合は cask オプションを使用してください。
$ brew cask install ngrok
実行
ローカルでの起動ページのポート番号を指定します。
http://localhost:3000
このような場合は、
$ ngrok http 3000
とコマンドしてください。
環境変数の設定
ローカル環境での環境変数を設定します。
今回は、dotenvを使い.envファイルで管理したいと思います。
gem dotenv-rails
'dotev-rails'というgemを使用します。
gem 'dotenv-rails'
$ bundle install
アプリケーションのルート直下に.envファイルを作成する。
$ touch .env
作成した.envファイル内にアクセストークンとchannel secretを設定する。
LINE_CHANNEL_SECRET=ここにChannel Secretを貼り付ける
LINE_CHANNEL_TOKEN=ここにアクセストークンを貼り付ける
gitignoreに.envファイルを追加し、アップしないように設定します。
/.env
Webhook URLの設定
先ほどのngrokのURL(2つめのForwarding)に/callbackをつけ、WebhookURLに設定します。
以上で、ローカル環境でLINEBotを動かす準備は終わりました!
Rails 6以外のみなさんお疲れ様です!
ブロックされる
Rails 6ではIPアドレス表記のサーバーとlocalhost以外のサーバーはブロックされるみたいです。
そこでngrokのアクセスを許可するように設定します。
Rails.application.configure do
〜中略〜
config.hosts << '.ngrok.io'
end
まとめ
ローカルで動かせるおかげで、デバッグが容易になりアプリの動きが良くわかり、
効率よく学習できるようになりました。
現在はぐるなびのAPIを使って飲食店検索のBotを作成しました。
参考文献
以下の記事を参考にさせていただきました。
https://qiita.com/hirokisoccer/items/7033c1bb9c85bf6789bd
https://qiita.com/suketa/items/f00570e6f171cb987ddd