Rails 4,Carrierwave-aws,图像在本地上传到亚马逊s3但未投入生产(Openshift)

时间:2015-05-26 22:21:20

标签: ruby-on-rails amazon-web-services amazon-s3 openshift carrierwave

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

1 个答案:

答案 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