對於我正在編寫的Rails 3應用程序,我正在考慮從本地文件系統的XML,YAML或JSON文件讀取一些配置數據。在Rails中存儲(結構化)配置數據的位置
關鍵是:我應該在哪裏放這些文件? Rails應用程序中是否有默認位置來存儲此類內容?
請注意,我的應用程序部署在Heroku上。
對於我正在編寫的Rails 3應用程序,我正在考慮從本地文件系統的XML,YAML或JSON文件讀取一些配置數據。在Rails中存儲(結構化)配置數據的位置
關鍵是:我應該在哪裏放這些文件? Rails應用程序中是否有默認位置來存儲此類內容?
請注意,我的應用程序部署在Heroku上。
我一直做的是:
然後,我創建,我加載YAML的初始化,我象徵配置哈希鍵和分配它像一個常數像APP_CONFIG
您也可以將它包含在模型中,以便您可以在應用程序的任何位置調用Settings.var_name
,並且它將解析文件以獲取正確的環境。
隨着settingslogic寶石:
class Settings < Settingslogic
source "#{Rails.root}/config/settings.yml"
namespace Rails.env
end
Rails的默認創建一個config
目錄,包含了大量的配置信息爲您的應用程序,包括數據庫和環境的信息。我認爲這是合乎邏輯的首要考慮事項。
第二選擇將是app
目錄,其中包含應用程序的所有模型,視圖和控制器,但我認爲,目錄中包含可執行代碼和模板,所以我與config
目錄去,親自。
我會ususaly採用這種方法:
一個配置/ config.yml
development:
another_key: "test"
app_name: "My App"
test:
another_key: "test"
production:
prova: "ciao"
然後在初始化
#config/initializer/load_config.rb
require 'ostruct'
config = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/config.yml"))
::AppSetting = OpenStruct.new(config.send(RAILS_ENV))
沒有DB表創建一個ostruct,每個環境設置和你可以以簡單的方式回顧信息
AppSetting.another_key
AppSetting.app_name
here a參考
祝你有美好的一天!
此方法的+1。 [這是這種方法的一個例子](https://gist.github.com/a217834493ff7d727ade)以及一些額外的功能;第二種方法很容易採用(每個文件一個環境)。 – 2011-03-02 02:08:50