Dans une application Ruby on Rails, quel est le meilleur endroit pour définir une constante ?
Je dispose d'un tableau de données constantes qui doivent être disponibles dans tous les contrôleurs de mon application.
Dans une application Ruby on Rails, quel est le meilleur endroit pour définir une constante ?
Je dispose d'un tableau de données constantes qui doivent être disponibles dans tous les contrôleurs de mon application.
Rails >= 3, l'application est elle-même un module (vivant dans config/application.rb
). Vous pouvez les stocker dans le module d'application
module MyApplication
SUPER_SECRET_TOKEN = "123456"
end
Ensuite, utilisez MyApplication::SUPER_SECRET_TOKEN
pour référencer la constante.
Rails >= 2.1 && < 3 vous devriez les placer
/config/initializers
lorsque la constante a le champ d'applicationAvant Rails 2.1 et initializers
les programmeurs avaient l'habitude de placer les constantes des applications dans environment.rb.
Voici quelques exemples
# config/initializers/constants.rb
SUPER_SECRET_TOKEN = "123456"
# helpers/application_helper.rb
module ApplicationHelper
THUMBNAIL_SIZE= "100x20"
def thumbnail_tag(source, options = {})
image_tag(source, options.merge(:size => THUMBNAIL_SIZE)
end
end
Vous pouvez les placer dans config/environment.rb :
Rails::Initializer.run do |config|
...
SITE_NAME = 'example.com'
end
Si vous avez une grande quantité de constantes globales, cela peut être désordonné. Envisagez de vous approvisionner à partir d'un fichier YAML ou de conserver les constantes dans la base de données.
EDITAR:
La réponse de Weppos est la meilleure.
Gardez vos constantes dans un fichier dans config/initializers/*.rb
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.