一度は叩けたAPIが叩けなくなり、頭を抱えています。
解決方法、その他何かご存知の方がおられましたらぜひ御指南願います。
【環境】
Ruby 2.6.3
Rails 5.2.3
PostgreSQL 10.9
mac Mojave 10.14.6
Google Cloud Translations API(v2の無料トライアル)
【状況】
Herokuにデプロイしたアプリに、GoogleのCloud Translation APIを叩く部分があります。
先日、How to use Google API credentials json on Heroku?を発見し、そのまま実行してその際はAPIが叩けたのですが、その翌々日午前中に再度APIを叩いたところ、以下のようなエラーが出ました。
RuntimeError (Unable to read the credential file specified by GOOGLE_APPLICATION_CREDENTIALS: JSON::ParserError):
実際にAPIが叩けた当時は数回APIを叩き、いずれも無事に結果が返ってきていたと思います。(productionのDBにも残っているので、おそらく…。)
1回の文字数は、最大でもこの記事本文の1行目程度です。
APIが叩けた日の翌日は同APIを1度も叩いていません。
ローカルでは問題ありません。
アプリ作成を進めるために多少コードをいじってはいたものの、JSONはもちろん、APIを叩く関連コードは一切いじっていません。(見た限り)
GoogleのAPIはこれ以外有効化したものはありません。
【やってみたこと】
1:遠隔で相談していた先輩からのアドバイスで、エラーの対象付近に以下を書いてみました
rescue ActionDispatch::Http::Parameters::ParseError => exception
render status: 400, json: { errors: [ exception.message ] }
これにより、パースエラーの詳細が掴めないか試してみたのですが、renderされずいつものHerokuのエラー画面になり、結局収穫を得られていません。
書く場所が間違っていたのかと、思い当たるところに起きなおしたり、begin endをきちんと追加するなども試しましたが変わらずでした。
2:Google Auth credentials not retrieved properly on Heroku staging accountを拝見し、一度Herokuの環境変数を削除した上でコマンドで環境変数の追加をしてみましたが、改善できませんでした。
3: heroku restart -app APP_NAME
でHerokuの再起動を試したのですが、変わらずです。
4:今一度GoogleのCloud Translation APIのページを読んでみましたが、解決につながるような内容を見つけることはできませんでした。ただ、読み落としや理解不足も考えられます。
5:(2019/10/30加筆)JSONLintにてJSONの中身も検証し、Valid JSONと結果を得ました。問題ないようです。
6:(2019/10/30加筆)Heroku:『heroku logs』コマンドとLOG_LEVELの設定についてを発見し、試して見ましたがログの内容に変化はなさそうでした。
7:(2019/10/30加筆)Google Cloud Translation APIの認証優先順位まとめより、クレカ登録済み、API有効は確認済み。同記事内の「閾値を超えていないか」は理解できず、詳しいことが確認できていません。
8:(2019/10/30加筆) 無料トライアルのステータス: 残りは ¥31,852.42 クレジット、280 日です。
の表示あり、トライアル枠はまだ残っているようです。