【发布时间】:2015-05-27 15:07:54
【问题描述】:
我有一个托管在 openshift 上的 Rails 4 应用程序。我正在使用carrierwave 和carrierwave-aws gem 来处理图像上传。当我在本地测试它时,图像会按预期上传并显示到 Amazon S3。但是,在 Openshift 上托管的生产服务器上,图像被上传到“/uploads/images”而不是亚马逊。 这是我的配置和 Gemfile:
gem 'carrierwave'
gem 'carrierwave-aws'
在初始化程序/carrierwave.rb
#config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.storage = :aws
config.aws_bucket = 'mybucketname'
config.aws_acl = :public_read
config.asset_host = 'https://mybucketname.s3-us-west-1.amazonaws.com'
config.aws_authenticated_url_expiration = 60 * 60 * 24 * 365
config.aws_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:access_key_id => 'myaccessid',
:secret_access_key => 'mysecretkey',
:region => 'us-west-1',
}
config.storage = :aws
config.cache_dir = "#{Rails.root}/tmp/uploads"
end
在 image_uploader.rb 我也放了
storage :aws
以防万一:我以前使用过 Fog,在本地也可以正常工作。然而在生产中它给出了一个 Excon 错误。经过一番谷歌搜索后,我得出结论,carrierwave-aws 是一个更好的选择。
【问题讨论】:
-
如果图像被存储在 /uploads/images 没有任何错误,那么可能是
carrierwave-awsgem 没有安装在你的生产服务器上。检查它是否安装。
标签: ruby-on-rails amazon-web-services amazon-s3 openshift carrierwave