2011-01-27 9 views
40

Me gustaría que el código en uno de mis inicializadores (en config/initializers/) se ejecute solo para el entorno :development, pero no :test o :production. ¿Cuál es la mejor manera de hacer eso?Rieles: ¿Inicializadores por entorno?

Pegarlo en config/environments/test.rb parece sucio, y no me gusta envolver todo el archivo de inicializador en una declaración if Rails.env == 'development' do ... end. ¿Hay alguna manera canónica de hacer esto?

(Antecedentes: Para acelerar los tiempos de carga de la prueba, que estoy tratando de mover la gema de Baristas en el grupo :development de mi Gemfile, pero config/initializers/barista_config.rb llama Barista.configure, por lo que ahora se ahoga en que en la prueba (y el modo de producción).)

Respuesta

40

Estoy bastante seguro de que sus dos únicas opciones son poner el código de configuración en config/environments/development.rb o envolver el código de inicialización con su bloque if. Sin embargo, puede ajustar su segunda opción haciendo if Rails.env.development?.

+7

Otro patrón similar es usar 'if defined? (Foo)', si la gema Foo solo se carga en modo desarrollo o prueba. [Konacha] (https://github.com/jfirebaugh/konacha) recomienda esto, por ejemplo. –

+0

Me gusta el enfoque de Konacha: evita repetir lo que ya se menciona en el Gemfile. – ZoFreX

1

Barista tiene un ajuste de configuración para esto:

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

Esto sólo recompilar coffeescript en js en el modo dev y debe acelerar sus pruebas.

asegúrese de ejecutar:.

rake barista:brew 

antes de revisar su código en

https://github.com/Sutto/barista

+0

'Barista.env' establece el entorno de Barista y su valor predeterminado es' Rails.env'. Forzarlo a ': development' hará que actúe como si tu aplicación estuviera en modo de desarrollo, independientemente de' Rails.env'. No debe configurar el entorno de esta manera. –

3

No sé si esto es una buena idea, pero es una idea diferente.

Se puede crear un directorio config/initializers/development (o config/environments/development/initializers), ponga su barista_config.rb en ese directorio, y luego son nada en este directorio desde config/environments/development.rb.

No sé si es una buena idea o no, pero es al menos una tercera opción ... en caso de que sigas pensando en este problema tres años y medio después de hacer la pregunta.

Cuestiones relacionadas