我使用的是軌道3,我想設置基於當前環境中的存儲變量,象下面這樣:設定來可變on Rails的環境
#if enviroment = development or test
:storage => :filesystem,
#else
:storage => :s3,
#end
你會有什麼辦法呢?我想過設置一個環境變量,但我認爲必須有更好的方法。
感謝您的時間 西蒙娜
我使用的是軌道3,我想設置基於當前環境中的存儲變量,象下面這樣:設定來可變on Rails的環境
#if enviroment = development or test
:storage => :filesystem,
#else
:storage => :s3,
#end
你會有什麼辦法呢?我想過設置一個環境變量,但我認爲必須有更好的方法。
感謝您的時間 西蒙娜
一種方法是使用rails中的內置環境設置。在環境目錄中設置的變量將覆蓋配置/環境
到config/environment.rb
ATTACHMENT_OPTIONS = {:storage => :filesystem}
配置/環境/ production.rb
ATTACHMENT_OPTIONS = {:storage => :s3}
然後在後面你的應用,只需要詢問ATTACHMENT_OPTIONS [:storage] - 在你的應用中沒有if/else。
Rails.env
會給你你在找什麼。
您還可以使用
Rails.env.development?
Rails.env.test?
Rails.env.production?
Rails.env.your_custom_environment?
爲了測試這些特定的環境。
謝謝!我必須將測試放入模型中,並且使用Netbeans時,我總是遇到錯誤。這裏的代碼: has_attached_file:avatar, :path =>「:attachment /:id /:style。:extension」, :url =>「/:附件/:id/:style.:extension」, : default_url =>'/:attachment/missing_:style.jpg', :styles => {:small =>「80x80>」,:thumb =>「100x100>」}, if(Rails.env.development?or Rails.env.test) :存儲=>:文件系統 別的 :存儲=>:S3 端 :default_style =>:拇指, :桶=> 'josha_pictures', :s3_credentials => { : access_key_id => ENV ['S3_KEY'], : –
什麼是錯誤?你會介意編輯你的問題並把代碼放在那裏嗎? –
爲什麼不使用三元運算符而不是if/else? :storage =>(Rails.env.development?|| Rails.env.test?)? :filesystem::s3 –
非常感謝Jesse! :) –