2011-07-30 13 views
1

に基づく設定私はレール3を使用していると私は以下のように、現在の環境に基づいて記憶変数を設定したいと思います:変数は、Railsの環境

#if enviroment = development or test 
    :storage => :filesystem, 
    #else 
    :storage => :s3, 
    #end 

あなたのアプローチは何でしょうか?私は環境変数を設定することを考えましたが、もっと良い方法があるはずです。

お時間をありがとう シモーネ

答えて

9

これを行う1つの方法は、レールに組み込まれた環境設定を使用することです。環境ディレクトリに設定された変数のconfig /環境を上書きします

のconfig/environment.rbに

ATTACHMENT_OPTIONS = {:storage => :filesystem} 

設定/環境/ production.rb

ATTACHMENT_OPTIONS = {:storage => :s3} 

その後であなたのアプリ、ちょうどATTACHMENT_OPTIONS [:storage]を尋ねる。

+0

ありがとうJesse! :) –

8

Rails.envあなたが探しているものをお渡しします。

また

Rails.env.development? 
Rails.env.test? 
Rails.env.production? 
Rails.env.your_custom_environment? 

は、これらの特定の環境をテストするために使用することができます。

+0

ありがとうございました!私はモデルの中にテストを入れなければならず、Netbeansではいつもエラーが出ます。ここでコード: has_attached_file:アバター、 :path => ":attachment /:id /:style。:extension"、 :url => "/:attachment/:id/:style.:extension"、 :スタイル=> {:小さい=> "80x80" "、親指=>" 100x100> "}、 if(Rails.env.development?)またはdefaults.url => '/:attachment/missing_:style.jpg' ?Rails.env.test) :ストレージ=>:ファイルシステムの他に :ストレージ=>: 最後 S3:DEFAULT_STYLE =>:親指、 :バケツ=> 'josha_pictures'、 :s3_credentials => { : access_key_id => ENV ['S3_KEY']、 : –

+0

エラーは何ですか?あなたの質問を編集し、そこにコードを入れてもよろしいですか? –

+0

if/elseの代わりに三項演算子を使用してみませんか? :storage =>(Rails.env.development ?| Rails.env.test?)? :ファイルシステム:s3 –