Carrierwave宝石 - Heroku - Fog宝石配置 - 出现名称错误

6

我对Heroku和Carrierwave Gem有点困惑。我已经阅读了Wiki、Read me和搜索了网络,但是我承认需要帮助。在本地一切都很好,但是Heroku会让应用程序崩溃。

///HEROKU日志中的错误信息

2012-01-03T17:33:26+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/carrierwave-0.5.8/lib/carrierwave/uploader/configuration.rb:91:in `eval': uninitialized constant CarrierWave::Storage::Fog (NameError

///GEM文件

gem "fog"
gem 'carrierwave'

/app/uploaders/avatar_uploader.rb

storage :fog

/config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',    
    :aws_access_key_id      => 'XXXX',    
    :aws_secret_access_key  => 'XXXX',   
    :region                 => 'eu-west-1'  # optional, defaults to 'us-east-1'
  }
  config.fog_directory  = 'site_images'  # required
  config.fog_public     = true     # optional, defaults to true
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
end

当我将存储更改为文件而不是fog时,就不会出现错误。我是否忽略或遗漏了其他fog设置?非常感谢任何帮助。我需要创建一个带有fog设置的单独文档吗?


你没有错过任何东西 - 但是为了检查显而易见的事情,你已经打包并提交了锁定文件,并将其推送到Heroku了吗?我在Heroku上使用与你相同版本的Carrierwave和Fog,一切都很好,所以恐怕这是你特定情况下的问题。你不会碰巧在lib/carrierwave中有任何fog凭据吧? - John Beynon
谢谢John,我已经打包并提交了。Carrierwave讨论将文件添加到lib目录中。我只有/config/initializers/carrierwave.rb,我应该把文件放在lib目录下吗? - Benjamin
不,你在config/initializers中是完全正确的 - lib/carrierwave已知会导致你遇到的错误。 - John Beynon
1个回答

0

这可能不是解决您问题的方法,但值得尝试添加

config.cache_dir = "#{Rails.root}/tmp/uploads"。这将有助于保留文件,直到它们上传到您的S3存储桶。

如果这没有帮助,您还可以发布您的上传器文件吗?


谢谢Yuri,我会加上那行代码的。非常感谢。 - Benjamin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接