##エラー内容
/production.log
Caught error forbidden: The request is missing a valid API key.
Error - #<Google::Apis::ClientError: forbidden: The request is missing a valid API key.>
ローカル環境ではdotenv-rails
を使い、.envファイル
の中に環境変数を定義してapiキーを管理していました。それがうまく読み込めずエラーになっているようです。
##解決方法
###①credentials.ymlにapi keyを定義する
EDITOR="vi" bin/rails credentials:edit
./credentials.yml
youtube:
GOOGLE_API_KEY: xxxxxxxxxxxxxxxxxxxxxxxx
credentials.yml.encの中身は暗号化されているのでmaster.key
を使って施錠してあげる必要があります。
※シンボルの後は半角スペースを開けないとうまく保存できないので注意してください。
###②本番環境(EC2内)にRAILS_MASTER_KEY環境変数を定義する credentials.yml.encを読み込むためにEC2内にmaster.keyを設定します。
./ec2-user
まずはmaster.key
を設定するファイルの作成
sudo vim /etc/environment
master.key
を定義します
./environment
RAILS_MASTER_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx
###③コントローラーでapi kyeを読み込む
Rails.application.credentials[:キー]
でcredentials.yml.encを呼び込めます。
GOOGLE_API_KEY = Rails.application.credentials.youtube[:GOOGLE_API_KEY]
うまく表示されました!