Carrierwave在生产中失败:无法将nil转换为字符串

时间:2013-02-07 09:15:39

标签: ruby-on-rails ruby carrierwave

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

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,事实证明我的载波和雾宝石已经过时了(它们完美运行直到我升级到Rails 4)。也许你可以尝试一下。

gem 'carrierwave', '0.9.0'
gem 'fog', '~> 1.3.1'