我正在使用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
答案 0 :(得分:0)
我遇到了类似的问题,事实证明我的载波和雾宝石已经过时了(它们完美运行直到我升级到Rails 4)。也许你可以尝试一下。
gem 'carrierwave', '0.9.0'
gem 'fog', '~> 1.3.1'