LoginSignup
5
2

More than 5 years have passed since last update.

「String does not have #dig method」AWS S3とのねちっこい戦い【初心者の場合】

Posted at

こんにちは、けんぞうです。
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君のエラーはいなくなりました。おしまい!

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2