2011-01-27 8 views
40

Chciałbym, aby kod w jednym z moich inicjalizatorów (w config/initializers/) był uruchamiany tylko dla środowiska :development, ale nie :test ani :production. Jaki jest najlepszy sposób na zrobienie tego?Szyny: Inicjatory dla różnych środowisk?

Wklejenie go do config/environments/test.rb wydaje się nieczyste, a ja nie lubię owijać całego pliku inicjatora w oświadczeniu if Rails.env == 'development' do ... end. Czy jest jakiś kanoniczny sposób na zrobienie tego?

(Tło: Aby przyspieszyć czas ładowania testowych, Próbuję przenieść gem Barista do grupy :development mojego Gemfile, ale config/initializers/barista_config.rb wzywa Barista.configure, więc teraz to krztusi się, że w teście (i produkcji) Tryb.)

Odpowiedz

40

Jestem prawie pewny, że jedynymi dwiema opcjami są kod konfiguracji w config/environments/development.rb lub zawijanie kodu inicjalizacyjnego za pomocą bloku if. Możesz jednak poprawić drugą opcję, wykonując if Rails.env.development?.

+7

Innym podobnym wzorem jest użycie 'if defined? (Foo)', jeśli klej Foo jest załadowany tylko w trybie programistycznym lub testowym. [Konacha] (https://github.com/jfirebaugh/konacha) zaleca to na przykład. –

+0

Podoba mi się podejście Konacha - unika powtarzania tego, co już zostało powiedziane w Gemfile. – ZoFreX

1

Barista ma ustawienie config dla tego:

Barista.configure do |c| 
    c.env = :development 
end 

Spowoduje to ponowną kompilację tylko coffeescript w js w trybie dev i należy przyspieszyć testy.

Upewnij się uruchomić.

rake barista:brew 

przed sprawdzeniem kodu w

https://github.com/Sutto/barista

+0

'Barista.env' ustawia środowisko Baristy, a domyślnie jest to' Rails.env'. Zmuszenie go do ': development' sprawi, że będzie działał tak, jakby twoja aplikacja była w trybie programistycznym, niezależnie od' Rails.env'. Nie powinieneś tak ustawiać środowiska. –

3

nie wiem czy to jest dobry pomysł, ale to już zupełnie inna idea.

Można utworzyć katalog config/initializers/development (lub config/environments/development/initializers), połóż barista_config.rb w tym katalogu, a następnie to coś w tym katalogu z config/environments/development.rb.

Nie wiem, czy to dobry pomysł, czy nie, ale jest to przynajmniej trzecia opcja ... na wypadek, gdybyś nadal myślał o tym problemie trzy i pół roku po zadaniu pytania.

Powiązane problemy