我正在使用 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