如何为每个环境提供paperclip s3_host_alias

时间:2012-12-09 22:23:01

标签: ruby-on-rails amazon-s3 paperclip

我目前在has_attached_file声明

上有这样的内容
# Photo.rb
...
:s3_host_alias => 'cdn.mydomain.com'

由于s3_host_alias指向特定的存储桶,因此在每个环境中都有所不同,我想知道如何设置:s3_host_alias来读取其环境下的值。

我想可能是一种有条理的方式来保存在这样的aws.yml配置文件中,

development:
  bucket: development.mydomain.com
  access_key_id: <%= ENV['S3_KEY'] %>
  secret_access_key: <%= ENV['S3_SECRET'] %>
  s3_host_alias: cdn-dev.mydomain.com

production:
  bucket: media.mydomain.com
  access_key_id: <%= ENV['S3_KEY'] %>
  secret_access_key: <%= ENV['S3_SECRET'] %>
  s3_host_alias: cdn.mydomain.com

test:
  bucket: test.mydomain.com
  access_key_id: <%= ENV['S3_KEY'] %>
  secret_access_key: <%= ENV['S3_SECRET'] %>
  s3_host_alias: cdn-test.mydomain.com

问题在于我不知道如何从s3_host_alias模型中调用此Photo.rb属性。

知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过向s3_host_alias发送一个lambda来解决它:

s3_host_alias: lambda {|p| p.s3_credentials[:s3_host_alias]}

请务必同时设置url:选项:

url: ':s3_alias_url'