0

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

1 回答 1

0

我遇到了类似的问题,原来我的carrierwave 和fog gem 已经过时了(在我升级到Rails 4 之前它们工作得很好)。也许你可以试一试。

gem 'carrierwave', '0.9.0'
gem 'fog', '~> 1.3.1'
于 2013-07-10T15:27:37.627 回答