59 votes

Comment accéder à une valeur de configuration Rails pendant l'exécution ?

J'utilise Rails 2.3.x. J'aimerais qu'une petite section de code s'exécute si et seulement si l'option config.cache_classes est vrai. Par défaut, c'est vrai pour la production et faux pour le développement.

Comment puis-je accéder à la valeur de config.cache_classes depuis l'extérieur de mes fichiers environment.rb, development.rb et production.rb ? Il est facile de savoir si nous sommes en production ou en développement, Rails.env nous donnera la réponse. Mais il n'y a aucune garantie que le développeur n'a pas mis en place config.cache_classes = true en cours de développement.

Je comprends tout à fait que vous ne souhaitiez généralement pas exécuter des chemins de code distincts en développement et en production. Dans ce cas particulier, nous n'effectuons tout simplement pas certaines tâches au démarrage ; si nous devons les effectuer plus tard, nous le ferons, à la fois en développement et en production.

101voto

molf Points 34978

Pour Rails 2, vous pouvez le faire :

Rails.configuration.cache_classes

Si vous passez un jour à Rails 3, ce sera différent ; vous pourrez accéder à la même valeur avec :

Rails.application.config.cache_classes

4voto

kross Points 635

Selon l'endroit où vous vous trouvez dans un module, vous pouvez avoir besoin d'accéder à l'espace de nom Root. Cela devrait permettre d'accéder à n'importe quel endroit de manière universelle pour les rails 3+ :

::Rails.application.config

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X