質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1194閲覧

herokuのstaging環境でrake_taskを叩いてもherokuのproduction環境で実行される

og33

総合スコア14

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/06/15 08:16

課題

herokuのstaging環境でrake_taskを叩いてもherokuのproduction環境で実行される
production環境で実行されるので、環境変数もproduction環境になってしまう
これをstaging環境で設定した環境変数を読み込んで実行したい

詳細

1、現在LINE Messaging APIを使っており、そのテスト用のherokuにstaging環境を作った。
2、staging環境ではテスト用のグループにメッセージを送って欲しいので、環境変数LINE_GROUP_IDの中身だけ、productionとは異なる値にした。

def send_line(message) client = Line::Bot::Client.new { |config| config.channel_secret = ENV["LINE_CHANNEL_SECRET"] config.channel_token = ENV["LINE_ACCESS_TOKEN"] } response = client.push_message(ENV["LINE_GROUP_ID"], message) p response end

3、staging環境でこのメソッドを実行する際にはrake_taskを利用しているので、staging環境で以下のコマンドを実行

heroku run 「実行するrake_task」 --app app名-staging

4、するとstagingとproductionでそれぞれ以下のようなログが出る。
stagingのログ

2018-06-15T01:11:07.216966+00:00 app[api]: Starting process with command `bundle exec rake send_remind_msg:tobanhyo` by user 2018-06-15T01:11:10.231803+00:00 heroku[run.1679]: Awaiting client 2018-06-15T01:11:10.254195+00:00 heroku[run.1679]: Starting process with command `bundle exec rake send_remind_msg:tobanhyo` 2018-06-15T01:11:11.736916+00:00 heroku[run.1679]: State changed from starting to up 2018-06-15T01:11:31.109611+00:00 heroku[run.1679]: State changed from up to complete 2018-06-15T01:11:31.089779+00:00 heroku[run.1679]: Process exited with status 0

productionのログ

2018-06-15T01:11:13.274848+00:00 heroku[web.1]: Unidling 2018-06-15T01:11:13.275258+00:00 heroku[web.1]: State changed from down to starting 2018-06-15T01:11:17.717378+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 7737 -e production` 2018-06-15T01:11:23.970734+00:00 app[web.1]: => Booting Puma 2018-06-15T01:11:23.970752+00:00 app[web.1]: => Rails 5.0.7 application starting in production on http://0.0.0.0:7737 2018-06-15T01:11:23.970754+00:00 app[web.1]: => Run `rails server -h` for more startup options 2018-06-15T01:11:23.970756+00:00 app[web.1]: Puma starting in single mode... 2018-06-15T01:11:23.970762+00:00 app[web.1]: * Version 3.11.4 (ruby 2.3.7-p456), codename: Love Song 2018-06-15T01:11:23.970764+00:00 app[web.1]: * Min threads: 5, max threads: 5 2018-06-15T01:11:23.970768+00:00 app[web.1]: * Environment: production 2018-06-15T01:11:23.971689+00:00 app[web.1]: * Listening on tcp://0.0.0.0:7737 2018-06-15T01:11:23.972203+00:00 app[web.1]: Use Ctrl-C to stop 2018-06-15T01:11:24.621474+00:00 heroku[web.1]: State changed from starting to up 2018-06-15T01:11:27.364825+00:00 app[web.1]: I, [2018-06-15T10:11:27.364729 #4] INFO -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Started POST "/send_remind_msg" for 54.204.192.95 at 2018-06-15 10:11:27 +0900 2018-06-15T01:11:27.367297+00:00 app[web.1]: I, [2018-06-15T10:11:27.367232 #4] INFO -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Processing by TobanhyosController#send_remind_msg as */* 2018-06-15T01:11:27.367365+00:00 app[web.1]: I, [2018-06-15T10:11:27.367309 #4] INFO -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Parameters: {"q"=>"ruby", "max"=>"50"} 2018-06-15T01:11:27.459417+00:00 app[web.1]: D, [2018-06-15T10:11:27.459294 #4] DEBUG -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Tobanhyo Load (2.6ms) SELECT `tobanhyos`.* FROM `tobanhyos` WHERE `tobanhyos`.`role_id` = 2 ORDER BY `tobanhyos`.`start_of_period` DESC LIMIT 1 2018-06-15T01:11:27.505593+00:00 app[web.1]: D, [2018-06-15T10:11:27.505477 #4] DEBUG -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Room Load (15.9ms) SELECT `rooms`.* FROM `rooms` WHERE `rooms`.`id` = 1 LIMIT 1 2018-06-15T01:11:27.530850+00:00 app[web.1]: D, [2018-06-15T10:11:27.530726 #4] DEBUG -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Role Load (4.5ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`id` = 2 LIMIT 1 2018-06-15T01:11:27.957020+00:00 heroku[router]: at=info method=POST path="/send_remind_msg" host=to-ban-hyo.herokuapp.com request_id=fb579202-e973-46f9-ba57-83b0ec0d88dd fwd="54.204.192.95" dyno=web.1 connect=0ms service=598ms status=204 bytes=239 protocol=https 2018-06-15T01:11:27.933668+00:00 app[web.1]: #<Net::HTTPOK 200 OK readbody=true> 2018-06-15T01:11:27.953696+00:00 app[web.1]: I, [2018-06-15T10:11:27.953560 #4] INFO -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] No template found for TobanhyosController#send_remind_msg, rendering head :no_content 2018-06-15T01:11:27.954162+00:00 app[web.1]: I, [2018-06-15T10:11:27.954082 #4] INFO -- : [fb579202-e973-46f9-ba57-83b0ec0d88dd] Completed 204 No Content in 587ms (ActiveRecord: 44.3ms)

以上のログからstagingで実行指示を出したtaskがproductionで実行されたことがわかる。
productionで実行されたので、LINE_GROUP_IDはproductionの値になっている。

試したこと

staging環境のRAILS_ENVがproductionになっていたのをtestに変更したところ、productionで設定していたグループ宛にメッセージが投稿されることはなくなった。なので、これが怪しいと考えている。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

rake_taskの中身がpostのURLになっているのですが、そちらが本番環境に向けて飛んでいたようです。
stagingについてはURLを変更したコミットをデプロイするということで対応しました。

投稿2018/06/19 00:49

og33

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問