我在openshift上托管了一个Rails 4应用程序。我正在使用carrierwave和carrierwave-aws gem处理图像上传。当我在本地测试时,图像会按预期上传并显示到Amazon S3。但是,在Openshift上托管的生产服务器上,图像会上传到' / uploads / images'而不是亚马逊。 这是我的配置和Gemfile:
gem 'carrierwave'
gem 'carrierwave-aws'
在initializers / 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是一个更好的选择。
答案 0 :(得分:-1)
使用gem'flow'和gem'carrierwave'使用此代码段
CarrierWave.configure do|config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'AWS_ACCESS_KEY',
aws_secret_access_key: 'AWS_SECRET_KEY',
region: 'region-name',
host: 's3.example.com',
endpoint: 'https://s3.example.com'
}
config.fog_directory = 'name of the bucket'
config.fog_public = 'false'
config.fog_attributes = {'Cache-Control' => "max-age=#{365.to_i}" }
end