2010-08-21 15 views
5

Mam aplikację szyny iz sekcji administracyjnej strony chciałbym włączyć/wyłączyć niektóre ustawienia, takie jak wyświetlanie reklam lub osadzanie kodu śledzenia Google Analytics.Gdzie powinienem przechowywać ustawienia konfiguracji witryny dla aplikacji Rails?

Czy istnieje najlepsza praktyka w tym zakresie w Railsach? Jedną z nich było stworzenie tabeli ustawień i przechowywanie w niej wartości.

+0

Jak będzie renderować HTML? – s84

+1

Wygląda na to, że edytujesz ustawienia czasu wykonania, które prawdopodobnie należą do tabeli bazy danych. – meagar

+0

Sam, myślałem, że HTML będzie renderowany w pliku układu aplikacji prawdopodobnie przy użyciu niestandardowej metody pomocnika. – Moe

Odpowiedz

0

Możesz zapisać swoją konfigurację w katalogu config/. Znam kilka aplikacji, które przechowują swoje konfiguracje w tym katalogu. (np. teambox.yml w Teambox).

1

Chciałbym przechowywać te informacje w bazie danych, chyba że nie masz do nich dostępu. Jeśli nie masz dostępu do bazy danych, możesz zapisać plik w folderze config.

Oto przykład kodu kontrolera do odczytu i zapisu do pliku konfiguracyjnego.

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 

UWAGA: ten kod może być dość często oczyszczony, ale powinien służyć jako przyzwoity przykład.

3

Jeśli nie zamierzamy konfiguracji run-time, a następnie można użyć coś takiego generatora ładne-config rbates': http://github.com/ryanb/nifty-generators

znam go do ustawień konfiguracyjnych proste, Build-czasowych. Tak więc, na przykład, podczas przechowywania poświadczeń bramki płatności dla witryny e-commerce, moja load_gateway_config.yml wygląda następująco:

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) 

Następnie, aby pobrać ustawienia z pliku konfiguracyjnego, można nazwać coś takiego

GatewayConfig.username 

Inną opcją jest configuration gem, która zapewnia podobne użycie notacji kropek, ale także bardziej zaawansowane opcje, takie jak ustawianie wartości domyślnych, a plik konfiguracyjny to Ruby zamiast YAML.

0

Już przegłosowałem inną odpowiedź, ale dla szybkiego i brudnego sposobu można upuścić zmienną klasy w environment.rb, po bloku kodu inicjalizatora.

Powiązane problemy