8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]ngrokを使ってローカル環境でLINEBotを動かす

Last updated at Posted at 2020-08-25

 概要

前回は、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

とコマンドしてください。

image.png
このように表示されればOKです!

 環境変数の設定

ローカル環境での環境変数を設定します。
今回は、dotenvを使い.envファイルで管理したいと思います。

 gem dotenv-rails

'dotev-rails'というgemを使用します。

Gemfile
 gem 'dotenv-rails'
 $ bundle install

アプリケーションのルート直下に.envファイルを作成する。

 $ touch .env

作成した.envファイル内にアクセストークンとchannel secretを設定する。

.env
 LINE_CHANNEL_SECRET=ここにChannel Secretを貼り付ける
 LINE_CHANNEL_TOKEN=ここにアクセストークンを貼り付ける

gitignoreに.envファイルを追加し、アップしないように設定します。

gitignore
 /.env

 Webhook URLの設定

image.png

先ほどのngrokのURL(2つめのForwarding)に/callbackをつけ、WebhookURLに設定します。

image.png

以上で、ローカル環境でLINEBotを動かす準備は終わりました!
Rails 6以外のみなさんお疲れ様です!

 ブロックされる

Rails 6ではIPアドレス表記のサーバーとlocalhost以外のサーバーはブロックされるみたいです。
そこでngrokのアクセスを許可するように設定します。

config/environments/development.rb
Rails.application.configure do
 〜中略〜
 config.hosts << '.ngrok.io'
end

 まとめ

ローカルで動かせるおかげで、デバッグが容易になりアプリの動きが良くわかり、
効率よく学習できるようになりました。
現在はぐるなびのAPIを使って飲食店検索のBotを作成しました。

 参考文献

以下の記事を参考にさせていただきました。
https://qiita.com/hirokisoccer/items/7033c1bb9c85bf6789bd
https://qiita.com/suketa/items/f00570e6f171cb987ddd

8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?