2011-06-10 3 views
2

具体的には、aws-s3 gemが秘密鍵などのs3設定を設定するために使用するファイルconfig/amazon_s3.ymlを持っています。このファイルのいくつかをENVの別のファイルイニシャライザでは、paperclipで使われている "has_attached_file"メソッドの呼び出しでそれらを参照できます。Rails3 - アプリでaws-s3のyml設定データを取得する方法は?

ファイルをイニシャライザで取得して、s3 config ymlやgemで使用されているクラスの設定を読み込むほうが賢明でしょう。たとえばAWS::S3::Base.connection.secret_access_key(これは動作しません)です。

アイデア?

答えて

9

私はHow to use YML values in a config/initalizer

ここで答えを見つけることが最初に私はでYAMLにロードし、定数でそれを固執します。

#config/initializers/constants.rb 
S3_CONFIG = YAML.load_file("#{::Rails.root}/config/amazon_s3.yml") 

その後、私はモデルのクリップを設定するとき、必ず私は、現在の環境を参照しながら、これらの値に引っ張っ:

class Entry < ActiveRecord::Base 
    has_attached_file :media, 
    :styles => { 
     :medium => "300x300>", 
     :thumb => "110x110>" 
    }, 
    :storage => :s3, 
    :bucket =>S3_CONFIG[::Rails.env]["bucket"], 
    :s3_credentials => { 
     :access_key_id => S3_CONFIG[::Rails.env]["access_key_id"], 
     :secret_access_key => S3_CONFIG[::Rails.env]["secret_access_key"] 
    }   
end 
+3

あなたが指定した保存しない場合'S3_CONFIG = YAML.load_file("#{:: Rails.root} /config/amazon_s3.yml ")[Rails.env]' – cailinanne

+1

ああ、素敵な1つです:) –

関連する問題