132 votes

Meilleure façon de créer des options de configuration personnalisé pour mon application Rails ?

J’ai besoin de créer une option de configuration pour mon application Rails. Il peut être le même pour tous les environnements. J’ai constaté que si je l’ai mis `` , il est disponible dans mon point de vue, qui est exactement ce que je veux...

Fonctionne très bien.

Cependant, je suis un peu mal à l’aise. Est-ce une bonne façon de le faire ? Y a-t-il une manière qui est plus hip ?

189voto

John Topley Points 58789

Pour la configuration générale de l'application qui n'a pas besoin d'être stockées dans une table de base de données, je voudrais créer une config.yml le fichier dans la config du répertoire. Pour votre exemple, il pourrait ressembler à ceci:

defaults: &defaults
  audiocast_uri_format: http://blablalba/blabbitybla/yadda

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults

Ce fichier de configuration est chargé d'une coutume de l'initialiseur dans config/initializers:

# Rails 2
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV]

# Rails 3+
APP_CONFIG = YAML.load_file(Rails.root.join('/config/config.yml'))[Rails.env]

Vous pouvez ensuite récupérer la valeur à l'aide de:

uri_format = APP_CONFIG['audiocast_uri_format']

Voir ce Railscast pour plus de détails.

82voto

David Burrows Points 3023

Version de rails 3 du code de l’initialiser se présente comme suit (RAILS_ROOT & RAILS_ENV sont déconseillés)

``

Ruby 1.9.3 utilise également, Psych qui rend les clés de la fusion à la casse donc vous aurez besoin de modifier votre fichier de configuration afin de tenir compte, par exemple

25voto

Reality Points 535

Étape 1 : Créer config/initializers/appconfig.rb

Étape 2 : Créer config/config.yml

Étape 3 : Obtenir les constantes n’importe où dans le code

6voto

foomip Points 201

Juste quelques informations supplémentaires sur ce sujet :

« .with_indifferent_access » vous permet d’accéder aux valeurs dans le hachage à l’aide d’une clé de type chaîne ou avec une clé de symbole équivalent.

par exemple.



Purement une chose de convenance, mais je préfère avoir mes clés représentés comme des symboles.

5voto

Jack Chu Points 3795

J’utilise quelque chose de similaire à John pour Rails 3.0/3.1, mais j’ai erb analyser le fichier tout d’abord :

Cela me permet d’utiliser ERB dans ma config si je dois, comme la lecture redistogo url de heroku :

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