Heroku上的Refinerycms不使用AmazonS3存储桶

时间:2013-11-07 11:57:53

标签: ruby-on-rails heroku amazon-web-services amazon-s3 refinerycms

我尝试设置Amazon S3支持,以使用refinerycms在云端存储图像。

我在https://console.aws.amazon.com/s3/

创建了一个存储桶

我将它命名为应用程序'bee-barcelona',它表示它属于美国标准区域

~/config/initializers/refinery/images.rb我输入了所有数据(其中'xxx?代表我输入的实际密钥:

# Configure S3 (you can also use ENV for this)
# The s3_backend setting by default defers to the core setting for this but can be set just for images.
config.s3_backend = Refinery::Core.s3_backend
config.s3_bucket_name = ENV['bee-barcelona']
config.s3_access_key_id = ENV['xxx']
config.s3_secret_access_key = ENV['xxx']
config.s3_region = ENV['xxx']

然后我将更改应用于heroku:

heroku config:add S3_KEY=xxx S3_SECRET=xxx S3_BUCKET=bee-barcelona S3_REGION=us-standard

但是,在我尝试上传的应用中,我只会得到:“抱歉,有些错误”。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

多么可悲的错误。直到我跑了10公里跑,我才想到那个选择......

我将应用设置为“养蜂” 我在亚马逊上的水桶名为“bee-barcelona”

我确实在应用中注册了正确的存储桶。仍然炼油厂试图继续前往另一个名为“养蜂”的人。使用我的密钥,我的文件无法在那里结束。

我创建了一个新的应用程序和一个新的存储桶,所有这些都是疯狂的名字,但是!它们在AmazonS3和GIT上都是一样的!!!

不,它就像魅力一样。

多么罕见的情况......

答案 1 :(得分:0)

我这样做的方式如下:

  • 在地区US-STANDARD创建一个水桶!!!!!!!!!!
  • 你看到了吗?美国标准,而非俄勒冈,而不是其他地方。

  • 将Gems添加到Gemfile

    gem "fog"
    gem "unf"
    gem "dragonfly-s3_data_store"
    
  • 在config / application.rb

    config.assets.initialize_on_precompile = true
    
  • 在config / environments / production.rb

    Refinery::Core.config.s3_backend = true
    
  • 在config / environments / development.rb

    Refinery::Core.config.s3_backend = false
    
  • 为heroku(生产)和本地存储配置S3以进行开发。在config / initializers / refinery / core.rb

    if Rails.env.production?
      config.s3_backend = true
    else
      config.s3_backend = false
    end
    config.s3_bucket_name = ENV['S3_BUCKET']
    config.s3_region = ENV['S3_REGION']
    config.s3_access_key_id = ENV['S3_ACCESS_KEY']
    config.s3_secret_access_key = ENV['S3_SECRET_KEY']
    
  • 向heroku添加变量:

    heroku config:add S3_ACCESS_KEY=xxxxxx S3_SECRET_KEY=xxxxxx S3_BUCKET=bucket-name-here S3_REGION=us-east-1
    

我遇到了很多问题,因为我在S3_REGION = us-standard之前就已经有了。这是错的。如图所示设置US-Standard存储桶:

S3_REGION =我们 - 东 - 1

在Rails 4.2.1和refinery 3.0.0上,这对我来说完美无缺。另外,请确保使用完全相同的变量名称。有时它会说S3_KEY而不是S3_ACCESS_KEY或S3_SECRET而不是S3_SECRET_KEY。只需确保您的文件和Heroku变量中包含相同的文件。