Rails 4,Carrierwave-aws,图像在本地上传到amazon s3但未投放到生产中(Openshift)

我在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是一个更好的选择。

使用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