NameError:未初始化的常量CarrierWave :: Storage :: Heroku日志中的雾
您好我刚刚将AWS S3 Bucket添加到我的应用程序中。
这是应用程序错误https://dry-atoll-6663.herokuapp.com/
在heroku日志中,当i $ heroku重新启动时,会出现此错误
2015-04-28T09:13:15.009823+00:00 app[web.1]: [3] ! Unable to load application: NameError: uninitialized constant CarrierWave::Storage::Fog
我的Carrierwave.rb
CarrierWave.configure do |config| config.fog_credentials = { # Configuration for Amazon S3 :provider => 'AWS', :aws_access_key_id => ENV['S3_ACCESS_KEY'], :aws_secret_access_key => ENV['S3_SECRET_KEY'] } config.fog_directory = ENV['S3_BUCKET'] end
有任何想法吗? 我和我的朋友正在大开眼界……
感谢@Marcus在评论中正确回答这个问题。
在config/initializers/carrierwave.rb
文件中,您需要更新
CarrierWave.configure do |config| # This is the old way, and broken config.storage = :fog
成
CarrierWave.configure do |config| # This is the new way! config.fog_provider = 'fog/aws'
有关更多信息,请参阅carrierwave github 。
把头发拉了几个小时后,我终于确定这似乎来自最近的一期carrierwave (0.10.0)
感谢GitHub用户trantorLiu ,这就是解决这个问题的原因:
我也遇到过这个问题。 我通过在Gemfile.lock中指定旧的Carrierwave修订版来修复它 。
这是我的Gemfile.lock。 版本
37cf31d
对我不起作用,所以我回滚到cb1a5bf
。 然后一切都像过去一样有效。GIT remote: git://github.com/carrierwaveuploader/carrierwave.git revision: cb1a5bfc6601a4e5d0abb6bad17911d73dcb57e3 specs: carrierwave (0.10.0) activemodel (>= 3.2.0) activesupport (>= 3.2.0) json (>= 1.7) mime-types (>= 1.16)
这是我的Gemfile。 仅供参考。
gem 'fog', require: 'fog/aws' gem 'carrierwave', github: 'carrierwaveuploader/carrierwave'
此外,如果它有帮助,这里我的config/initializers/carrierwave.rb
:
CarrierWave.configure do |config| if Rails.env.development? config.storage = :file elsif Rails.env.test? config.storage = :file config.enable_processing = false else config.storage = :fog config.fog_credentials = { provider: 'AWS', aws_access_key_id: Rails.configuration.aws.access_key_id, aws_secret_access_key: Rails.configuration.aws.secret_access_key, } config.fog_directory = Rails.configuration.files.aws_bucket end end
经过进一步审查,我决定完全放弃fog
。 我最终使用了carrierwave-aws
。 配置实际上是相同的。
我的新config/initializers/carrierwave.rb
:
CarrierWave.configure do |config| if Rails.env.development? config.storage = :file elsif Rails.env.test? config.storage = :file config.enable_processing = false else config.storage = :aws config.aws_bucket = Rails.configuration.files.aws_bucket config.aws_acl = 'public-read' config.aws_credentials = { access_key_id: Rails.configuration.aws.access_key_id, secret_access_key: Rails.configuration.aws.secret_access_key, region: Rails.configuration.aws.region, } end end
- 从AWS S3读取CSV文件时获取“Errno :: ENOENT:没有此类文件或目录@ rb_sysopen”
- 使用Ruby将大文件上传到S3失败,出现内存不足错误,如何在块中读取和上载?
- 适用于使用carrierwave上传图像文件的用户的s3权限
- rails assets:在slug期间为s3错误预编译:当设置env时,雾提供程序和目录不能为空
- 从S3下载文件到Rails 4应用程序
- 上传器产生有关应存储路径的列的错误
- Paperclip S3下载远程图像
- 如何使用ruby将S3存储桶中的文件内容下载到内存中?
- Rails 4,Carrierwave-aws,图像在本地上传到amazon s3但未投放到生产中(Openshift)