Rails> = 3, l'application elle-même est 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 faire référence à la constante.
Rails> = 2.1 & & < 3 vous devez les placer
- dans
/config/initializers
lorsque la constante a les applications portée
- lorsque la constante se réfère à un modèle/contrôleur/aide spécifique que vous peut l'étendre dans la classe/le module lui-même
Avant la prise en charge de Rails 2.1 et initializers
, les programmeurs étaient utilisés pour placer les constantes d'application dans environment.rb.
est ici 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
étrange, mais ne fonctionne pas. Bien que constants.rb soit exécuté au lancement, je ne peux pas accéder à SUPER_SECRET_TOKEN dans les contrôleurs ou les vues. –
Maintenant c'est drôle. Qui saura que la «surpuissance» de ces constantes est imposée dans les rails? –
Remarque: n'oubliez pas de redémarrer votre serveur après avoir créé une nouvelle constante. Sinon, il ne s'affichera pas correctement! –