2010-08-21 81 views
5

我有一個Rails應用程序,並且從該網站的管理部分中,我希望能夠啓用/停用某些設置,例如投放廣告或嵌入Google Analytics(分析)跟蹤代碼。我應該在哪裏存儲Rails應用程序的站點整個網站配置設置?

在Rails中有最佳實踐嗎?一個想法是創建一個設置表並在其中存儲值。

+0

你將如何呈現HTML? – s84 2010-08-21 02:01:28

+1

這聽起來像你正在編輯運行時設置的,這可能在一個數據庫表中的歸屬。 – meagar 2010-08-21 02:06:08

+0

山姆,我在想HTML將在應用佈局文件可能使用自定義的helper方法來呈現。你提到 – Moe 2010-08-21 02:20:02

回答

0

您可以將您的配置存儲在config/目錄中。我知道一些將它們的配置存儲在那個目錄中的應用程序。 (例如,在Teambox中的teambox.yml)。

1

我會將這些信息存儲在數據庫中,除非您無法訪問這些信息。如果您無法訪問數據庫,則可以將該文件存儲在config文件夾中。

以下是用於讀取和寫入配置文件的示例控制器代碼。

def featured_specials 
    @featured_specials = YAML::load_file("#{RAILS_ROOT}/config/featured_specials.yml") 
end 

def save_featured_specials 
    config_file = "#{RAILS_ROOT}/config/featured_specials.yml" 
    File.new(config_file, "w") unless File.exist?(config_file) 
    File.open(config_file, "w") do |f| 
    f.write(params['formvars'].to_yaml) 
    end 
    flash[:notice] = 'Featured Specials have been saved.' 
    redirect_to :action => 'featured_specials' 
end 

注意:這段代碼可以清理很多,但應該作爲一個體面的例子。

3

如果你不打算用於運行時配置,那麼你可能會使用類似rbates'漂亮,配置發電機:http://github.com/ryanb/nifty-generators

我已經使用了簡單的構建時的配置設置。所以,舉例來說,存儲支付網關憑據電子商務網站的時候,我load_gateway_config.yml看起來是這樣的:

require 'ostruct' 

raw_config = File.read(Rails.root + "config/gateway_config.yml") 
GATEWAY_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys 

#allow dot notation access 
GatewayConfig = OpenStruct.new(GATEWAY_CONFIG) 

然後,抓住你的配置文件中的設置,你會打電話給像

GatewayConfig.username 

另一個選項是configuration gem它給你類似的點符號用法,但也有更高級的選項,如設置默認值,配置文件是Ruby而不是YAML。

0

我已經upvoted不同的答案,但對於一個快速和骯髒的方式,您可以初始化的代碼塊後environment.rb中刪除一個類變量。

相關問題