Rac*_*Roy 5 yaml ruby-on-rails ruby-on-rails-3
我有以下yml
/config/s3.yml
common: &common
access_key_id: asddasadsadsad
secret_access_key: adsasddasdasdsa+qlSn+dadadada
development:
<<: *common
bucket: XX_dev
test:
<<: *common
bucket: XX_test
production:
<<: *common
bucket: XX_prod
has_attached_file :photo,
:styles => { :thumb => "70x70>" },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/assets/users/:id/:style/:basename.:extension",
:bucket => "????How to get this from the YML based on the ENV???",
Run Code Online (Sandbox Code Playgroud)
我想在回形针中使用它,我该如何访问存储桶?谢谢
apn*_*ing 14
在初始化程序中创建一个文件并将其放入:
raw_config = File.read("#{Rails.root}/config/s3.yml")
APP_CONFIG = YAML.load(raw_config)
Run Code Online (Sandbox Code Playgroud)
然后在您的应用中,您将以这种方式访问它的值:
APP_CONFIG[Rails.env]["bucket"]
Run Code Online (Sandbox Code Playgroud)
您不需要传递:bucket参数,Paperclip 已经知道使用文件bucket:中当前环境的密钥s3.yml。
另请注意,如果您通过 RVM 手动编译 Ruby 1.9.2,则有可能成为新 Psych YAML 引擎中错误的受害者。它不喜欢“DRY”yaml 文件(然而——它已被归档为一个错误,应该在 Ruby 的下一个正式版本中修复)。发生的情况是,继承自 的每个项目common仅包含那些继承的项目(您的访问密钥和秘密 ID),并且实际上不包含您添加的其他内容(在您的情况下,您的存储桶名称)。
尝试制作一个yml没有该common部分的传统文件(即为每个环境重复访问密钥和秘密 ID)。详细信息:在 Rails 中加载 YAML 配置文件时出错
更新
今天发布的最新 Ruby 版本 (1.9.2-p290) 修复了此问题。
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |