2010-11-30 14 views
57

Estoy usando Rails 2.3.x. Me gustaría que se ejecutara una pequeña sección de código si y solo si el config.cache_classes es verdadero. Por defecto, eso es cierto para producción y falso para desarrollo.¿Cómo accedo a un valor de configuración de Rails durante el tiempo de ejecución?

¿Cómo accedo al valor de config.cache_classes desde fuera de mis archivos environment.rb, development.rb y production.rb? Es fácil saber si estamos en producción o desarrollo, Rails.env nos dará la respuesta. Pero no hay garantía de que el desarrollador no haya establecido config.cache_classes = true en desarrollo.

Ciertamente, entiendo que generalmente no desea ejecutar rutas de código separadas en desarrollo y producción. En este caso particular, simplemente no estamos realizando algún trabajo en el inicio; si necesitamos realizarlo más tarde, lo haremos, tanto en desarrollo como en producción.

Respuesta

91

para los carriles 2, puede hacerlo:

Rails.configuration.cache_classes 

Si alguna vez cambia a Rails 3, que va a ser diferente; Puede acceder al mismo valor con:

Rails.application.config.cache_classes 
+0

Je. Sabía que sería algo obvio así. Intenté Rails.config, no pensé en probar eso. Gracias. Estaré aceptando esta respuesta una vez que el límite de tiempo expire. – ChrisInEdmonton

+0

Hay una excepción con perform_caching, que también se puede configurar por controlador, por lo que debe acceder a ella por controlador – iain

+6

Para mí fue 'MyApp :: Application.config.foo' (Rails 4.1). –

1

Dependiendo de dónde se encuentre en un módulo, es posible que necesite acceder al espacio de nombres raíz. Esto debería proporcionar acceso desde cualquier lugar de una forma universal para carriles 3+:

::Rails.application.config

Cuestiones relacionadas