Dans une application Ruby on Rails, où est le meilleur endroit pour définir une constante?
J'ai un tableau de données constantes dont j'ai besoin disponible sur 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
Utilisez ensuite MyApplication::SUPER_SECRET_TOKEN
pour référencer la constante.
Rails> = 2.1 && <3 vous devez les placer
/config/initializers
lorsque la constante a la portée des applicationsAvant la prise en charge de Rails 2.1 et initializers
), les programmeurs étaient utilisés pour placer des constantes d'application 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 de grandes quantités de constantes globales, cela peut être compliqué. Envisagez de vous approvisionner à partir d'un fichier YAML ou de conserver les constantes dans la base de données.
ÉDITER:
la réponse de weppos est la meilleure réponse.
Conservez vos constantes dans un fichier dans config/initializers/*. Rb