Rails + Cloud9でLINEのMessaging APIを開発する際、Webhookの設定及びデバッグしたいものの、Cloud9の開発環境で使用しているURLは、Webhook用で設定できません。
そこで便利なサービス「ngrok」です。
ngrokを使えば、一時的に開発環境を外部へ公開できます。
WebhookのURLとして設定することができるため、デプロイしてデバッグする必要はありません。
ngrokの利用の流れについて紹介します。
ngrokインストール
まず、cloud9の開発環境へngrokをインストールします。
ターミナル
$ cd アプリディレクトリ
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip ngrok-stable-linux-amd64.zip
上記のコマンドでroot配下へ下記のファイルが生成されています。
ngrok
ngrok-stable-linux-amd64.zip
zipファイルは今後利用しないので、削除してOKです。
また、.gitignoreへ「ngrok」を追加しておきます。
# ~省略
ngrok
そして、下記のコマンドでインストール確認しておきます。
ターミナル
$ ./ngrok -v
=>ngrok version 2.3.40
ヘルプは下記で確認できます。
ターミナル
$ ./ngrok --help
ngrokのユーザー登録
続いて、ngrokへsignupして認証します。(しなくても良いのかも?)
signup完了後、下記の画面にて赤枠箇所をコピーします。

そしてターミナルで実行します。
ターミナル
$ ./ngrok authtoken 2*************************************
ngrokの起動
そしていよいよ起動です。
ターミナル
$ ./ngrok http 8080
下記の画像のような画面が表示されればOKです。

そして、赤枠箇所をコピーします。
(該当箇所をクリックしながらなぞって、右クリックでコピーするとできました。)
下記の青文字箇所が重要な文字列です。(起動時に毎回異なった文字列が生成されます)
https://3a22-18-183-31-190.ngrok.io -> http://localhost:8080
development.rbへ下記追加します。
Rails.application.configure do
# ~省略
config.hosts << "3a22-18-183-31-190.ngrok.io"
# ~省略
end
これで準備OKです。
ブラウザから下記のURLへアクセスして、接続できれば成功です。
“https://3a22-18-183-31-190.ngrok.io”
Webhook用のURLのパスが/line/callbackであれば、下記URLをLINE管理画面で設定してあげればOKです。
“https://3a22-18-183-31-190.ngrok.io/line/callback”
毎回起動時にURLが異なるのは手間ですが、開発環境でデバッグできるのはとてもありがたいですね。