Fogを使用してS3にアップロードしています。アップロードは開発では正常に機能しますが、本番環境では次のエラーが発生します。
TypeError (can't convert nil into String):
app/controllers/pictures_controller.rb:29:in `create'
(その行は画像が保存される場所です)。これでスタックトレースは終了です。
コンソールに移動して実行すると、次のようになります。
p = Picture.new(image: "~/rails_apps/my_app/current/app/assets/images/rails.png")
それは私に本番環境で次のことを与えます:
CarrierWave::FormNotMultipart: CarrierWave::FormNotMultipart
...しかし、開発には抗議しません。おそらくそれが手がかりです。
アップロードが本番環境で機能しない理由はありますか?
これが私のcarrierwave.rb初期化子です:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'], # required
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']#, # required
}
if Rails.env.production?
config.fog_directory = 'mydir' # required
else
config.fog_directory = 'mydir-development' # required
end
config.fog_public = true # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end