はじめに
転職のためプログラミングを勉強し始めて約4ヶ月が経ちました。
現在、Ruby on Railsを使用して音声の感情を判定するポートフォリオを製作しています。
API利用で音声をpostしてレスポンスをもらうコードをHerokuに反映させたときのエラーについて記事に残したいと思います。
結論先に
ローカルでAPIキーを環境変数に設定した場合、
Heroku側にも設定しなければならない
エラーまでの経緯
今回使用したいAPIは一日の利用回数限度が設定されていた。
ポートフォリオで使うにはもう少し上限を上げたいと思い、開発企業側にコンタクトをとってみる。
幸い上限枠の拡張を快く了承してくれ、専用のAPIキーを発行してくれた。
このAPIキーをGitに晒すのは良くないので、
dotenvを使用して環境変数とすることに。
dotenvの公式資料はこちら↓
https://github.com/bkeepers/dotenv
.envファイルにAPIキーを定義して
API_KEY = '***********'
Railsのコントローラーで使う
#~省略
key = ENV['API_KEY']
#~省略
Gitに晒したくないので、
.gitignoreファイルへ/.envを記載する【※重要】
/.env
rails sで確認、問題なし。
git pushして
herokuにもpush。
heroku openでArgumenterror
APIを利用する箇所でエラーが出てしまった。
アレコレ考えているうちに、『そういやHerokuってGitの情報を元にしてるから環境変数知らんやん』
と気づきました。
Heroku側で設定を追加する
ということで解決までの流れです。
コマンドのみで操作して解決できる方法もあるのですが、
Herokuのどの部分に書くのかな〜と見ながら進めたいと思ったので
アナログにHerokuにログインして進めました。
まずはHerokuにログインして、該当のアプリを開く
上部にメニューがあるので『Settings』を選択
上から2番目くらいにConfig Varsという項目があるので『Reveal Config Vars』を押下
Config Varsが表示されているはず。
左枠にKEY、右枠にValueを入れることができます。
今回はこの様に記載する
Addを押下して完了!
一応Heroku再起動のコマンドを叩きました
heroku restart
ちなみに、.envファイルに書いたみたいに
Value枠に'***********'←の''シングルコーテーションをつけちゃうとダメだったのでお気をつけて・・・