Heroku和carrierwave不加载我的s3配置

sk8*_*k87 3 heroku amazon-s3 ruby-on-rails-3 carrierwave

我在Heroku上有一个应用程序,它使用Carrierwave gem将图像上传到S3.

我在一个名为carrierwave.rb的初始化程序中设置了s3配置

CarrierWave.configure do |config|
  config.s3_access_key_id = 'XXXXXXXXXXXXXXXXXXXX'
  config.s3_secret_access_key = 'XXXXXXXXXXXXXXXXX'
  config.s3_bucket = 'XXXXX'
  config.storage = :s3
end
Run Code Online (Sandbox Code Playgroud)

这在我的本地机器上的开发工作正常,但是一旦我部署到Heroku,我得到以下错误

A Errno::EACCES occurred in events#update:

Permission denied - /app/public/uploads
/usr/ruby1.8.7/lib/ruby/1.8/fileutils.rb:243:in `mkdir'
Run Code Online (Sandbox Code Playgroud)

显然它正在尝试写入只读的heroku服务器,而不是拿起我的s3设置.

有谁知道如何让heroku将我的文件发送到s3?

Joh*_*man 7

来自CarrierWave wikki:

Heroku has a read-only filesystem, so uploads must be stored on S3 and cannot be cached in the public directory.

You can work around this by setting the cache_dir in your Uploader classes to the tmp directory:
Run Code Online (Sandbox Code Playgroud)

查看https://github.com/jnicklas/carrierwave/wiki并滚动到标有"Heroku上的CarrierWave"的底部,看看他们是如何设置它的.希望这有助于某人.


Joh*_*non 6

你看过这个演示应用吗?

特别是这里上传的课程

  • 这两行修复了它:https://github.com/trevorturk/carrierwave-heroku/blob/master/config/initializers/carrierwave.rb#L2 (2认同)