こんにちは、けんぞうです。
Railsでアプリを作ってHerokuでデプロイすると「画像保存できねーじゃん!」というのは、皆が通る道ですよね。
その「画像保存できない問題」については【Rails】AWS S3を使ってHerokuで画像を投稿できるようにする方法で解決できるんですが、これをやっている中で以下のエラーに出くわしました。
String does not have #dig method
こいつの解決策を書きます、初心者ならではのミスという感じです、、、苦笑
##そもそも、#digてどこのことやねん
storage.yml
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
これに含まれるdigでエラーが出てしまってます。
原因①:credentials
のコメントアウト外した?
【Rails】AWS S3を使ってHerokuで画像を投稿できるようにする方法の流れの中で
$ EDITOR=vim rails credentials:edit
aws:
access_key_id: #ここに自分のアクセスキーIDをコピペ
secret_access_key: #ここに自分のシークレットアクセスキーをコピペ
この手順を踏むのですが、aws
以下の3行はもともとコメントアウトされてるんですよね。これに気がつかず、2時間くらい消耗、、、
#aws:
# access_key_id: #ここに自分のアクセスキーIDをコピペ
# secret_access_key: #ここに自分のシークレットアクセスキーをコピペ
⬆︎コメントアウトを外そう
原因②:半角スペース開けた?
aws:
access_key_id: #これを消してアクセスキーIDをペースト
secret_access_key: #これを消してシークレットアクセスキーをコピペ
上記のaccess_key_id:
とsecret_access_key:
の後ろには、それぞれ半角スペースが必要。
僕の場合はスペースが相手いなかったので、うまく読み取れず出力できなかった。
上記の原因をつぶせば、問題なくdig君のエラーはいなくなりました。おしまい!