1
0

More than 1 year has passed since last update.

AWSのS3で画像が保存できない

Posted at

簡易的なフリマアプリを作成中。

AWSのS3に画像を保存するための実装を実施。
必要なファイルや記述なども終え、まずローカル環境で画像がS3に保存できるかの挙動確認を行う。

が、エラー発生。

エラー文は以下の通り。

NoMethodError (undefined method `upload' for nil:NilClass): 

「スペルミスでもしたかな?」

まずは今回新たに追記したconfig/environments/developmentconfig/storage.ymlのファイルを見直す。
しかし特に間違っている様子はない。

次にエラー内容をgoogleにて検索。
すると、同じ境遇の方々がたくさんいらっしゃいました笑
それぞれの記事を見ていると「:が抜けている」や「""を忘れている」などの内容が多かったので、再度その辺りを確認するため、各コードを見直し。
が、やはり間違いが見当たらない・・・

S3に入る直前に挙動確認を行った際は、問題なく画像が保存されていたので、コードの書き間違いは考えにくい。
間違いがあるのはconfigの箇所であることはほぼ確定している。
でもどこが間違っているのかが全くわからない・・・

するととある記事を発見。そこには「余計なスペースが入っていた」と書かれている。

「スペース?そういえばそこは意識してなかったかも」

再度コードとにらめっこ開始。

すると・・・

発見!!!

config/storage.yml
local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

 amazon:
  service: S3
  region: ap-northeast-1
  bucket: バケット名
  access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %>
  secret_access_key:  <%= ENV['AWS_SECRET_ACCESS_KEY'] %>

amazon:の前に半角スペースが!
調べてみると、半角スペースがあるせいで、上記のlocal:の続きと見なされてしまうのだとか。

早速この余計なスペースを削除して、再度挙動確認!
が、まだ保存できない・・・

さらに1時間考えた末、出した結論は

PC再起動

すると無事にエラー解決できました笑

1
0
0

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
1
0