尝试使用在Heroku

时间:2015-10-02 16:43:37

标签: ruby-on-rails-4 heroku amazon-s3 paperclip aws-sdk

我一直在努力解决这个问题一天,并且无法在网上找到其他任何帮助。我有一个Rails 4应用程序,我使用AWS S3和paperclip gem来托管用户头像。我为存储桶,访问密钥ID和密钥以及区域设置了我的Heroku配置变量。但是,每当我尝试在heroku应用程序上传图片时,我的Heroku日志中都会出现此错误:

Aws::Errors::MissingRegionError (missing region; use :region option or export region name to ENV['AWS_REGION']):

在我的production.rb文件中,我有这段代码:

应用程序/配置/环境/ production.rb

config.paperclip_defaults = {
    storage: :s3,
    region: ENV['AWS_REGION'],
    s3_credentials: {
      bucket: ENV['AWS_BUCKET'],
      access_key_id: ENV['AWS_ACCESS_KEY_ID'],
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
    }
  }

我已经密切关注此链接(https://devcenter.heroku.com/articles/paperclip-s3),但仍不确定为什么我一直收到错误。我也尝试过硬编码'us-west-1',但这并不起作用。

在heroku控制台中:

irb(main):001:0> ENV['AWS_REGION']
=> "us-west-1"

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

经过大量试验,我认为我解决了这个问题。我做的主要更改是1)在gemfile中使用gem 'aws-sdk', '< 2.0'而不是v2.0。其次,product.rb中的这种变化:

  config.paperclip_defaults = {
    storage: :s3,
    :s3_credentials => {
      bucket: ENV['AWS_BUCKET'],
      :s3_credentials => "#{Rails.root}/config/aws.yml",
    }
  }

和aws.yml的创建,aws-sdk寻找:

应用程序/配置/ aws.yml

development:
  access_key_id: AWS_ACCESS_KEY_ID
  secret_access_key: AWS_SECRET_ACCESS_KEY

production:
  access_key_id: AWS_ACCESS_KEY_ID
  secret_access_key: AWS_SECRET_ACCESS_KEY

如果有人仍有问题,请点击此链接可能会对您有所帮助: http://www.korenlc.com/rails-uploading-photos-via-amazon-s3-and-paperclip/