こんにちは、Nanayakuです。
S3に画像を保存しようとした時に起きたエラーについて説明します。
単純なミスで、環境変数を’’で囲っていなかったことがで原因でした。
下記のコードは本番環境の場合、S3にアクセスし画像を保存するコードです。
ENV[]の[]の中の環境変数を''で囲っていないため、エラーが発生します。
if Rails.env.production? CarrierWave.configure do |config| config.storage = :fog config.fog_provider = 'fog/aws' config.fog_credentials = { provider: 'AWS', aws_access_key_id: ENV[AWS_ACCESS_KEY_ID], aws_secret_access_key: ENV[AWS_SECRET_ACCESS_KEY], region: ENV[S3_REGION] } config.fog_directory = ENV[S3_BUCKET] config.fog_public = true config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } end CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/ end
EVN[]の環境変数を’’で囲めば、エラーは起きません。
if Rails.env.production? CarrierWave.configure do |config| config.storage :fog config.fog_provider = 'fog/aws' config.fog_directory = ENV['S3_BUCKET'] config.fog_credentials = { provider: 'AWS', aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], region: ENV['S3_REGION'], path_style: true } config.fog_public = true config.fog_attributes = { 'Cache-Control' => "max-age=#{365.day.to_i}" } end end