Pour la configuration d'application générale qui n'a pas besoin d'être stockée dans une table de base de données, j'aime créer un config.yml
fichier dans le répertoire de configuration . Pour votre exemple, cela pourrait ressembler à ceci:
defaults: &defaults
audiocast_uri_format: http://blablalba/blabbitybla/yadda
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults
Ce fichier de configuration est chargé à partir d'un initialiseur personnalisé 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]
Si vous utilisez Rails 3, assurez-vous de ne pas ajouter accidentellement une barre oblique à votre chemin de configuration relatif.
Vous pouvez ensuite récupérer la valeur en utilisant:
uri_format = APP_CONFIG['audiocast_uri_format']
Voir ce Railscast pour plus de détails.
YAML::ENGINE.yamler = 'syck'
pour que cela fonctionne stackoverflow.com/a/6140900/414220RAILS_ENV
parRails.env
etRAILS_ROOT
parRails.root
.Rails.application.config.whatever_you_want = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
La version Rails 3 du code d'initialisation est la suivante (RAILS_ROOT et RAILS_ENV sont obsolètes)
APP_CONFIG = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]
De plus, Ruby 1.9.3 utilise Psych qui rend les clés de fusion sensibles à la casse, vous devrez donc changer votre fichier de configuration pour en tenir compte, par exemple
la source
"#{Rails.root.to_s}"
;"#{Rails.root}"
travaux.Rails.root.join('config', 'config.yml')
place de"#{Rails.root.to_s}/config/config.yml"
AppName::Application.config.custom
Rails> = 4,2
Créez simplement un
YAML
fichier dans leconfig/
répertoire, par exemple:config/neo4j.yml
.Le contenu de
neo4j.yml
peut être quelque chose comme ci-dessous (pour plus de simplicité, j'ai utilisé par défaut pour tous les environnements):dans
config/application.rb
:Maintenant, votre configuration personnalisée est accessible comme ci-dessous:
Plus d'informations
Le document officiel de l'API Rails décrit la
config_for
méthode comme suit:Si vous ne souhaitez pas utiliser de
yaml
fichierComme le dit le guide officiel de Rails:
Exemple
Référence officielle de la
config_for
méthode | Guide officiel des railsla source
Étape 1: Créez config / initializers / appconfig.rb
Étape 2: Créez config / config.yml
Étape 3: Obtenez des constantes n'importe où dans le code
la source
Je voulais juste mettre à jour ceci pour les derniers trucs sympas dans Rails 4.2 et 5, vous pouvez maintenant le faire dans n'importe lequel de vos
config/**/*.rb
fichiers:(et c'est un littéral
x
là-dedans, c'est-à-dire. leconfig.x.
littéralement doit être ça, et ensuite vous pouvez ajouter ce que vous voulez après lex
)... et cela sera disponible dans votre application en tant que:
Pour en savoir plus: http://guides.rubyonrails.org/configuring.html#custom-configuration
la source
x
.You can configure your own code through the Rails configuration object with custom configuration under either the config.x namespace, or config directly. The key difference between these two is that you should be using config.x if you are defining nested configuration (ex: config.x.nested.nested.hi), and just config for single level configuration (ex: config.hello).
Source: guides.rubyonrails.org/configuring.html#custom-configurationJuste quelques informations supplémentaires sur ce sujet:
".with_indifferent_access" vous permet d'accéder aux valeurs du hachage à l'aide d'une clé de chaîne ou d'une clé de symbole équivalente.
par exemple.
APP_CONFIG['audiocast_uri_format'] => 'http://blablalba/blabbitybla/yadda'
APP_CONFIG[:audiocast_uri_format] => 'http://blablalba/blabbitybla/yadda'
C'est purement pratique, mais je préfère que mes clés soient représentées sous forme de symboles.
la source
J'utilise quelque chose de similaire à John pour Rails 3.0 / 3.1, mais je dois d'abord analyser le fichier par erb:
Cela me permet d'utiliser ERB dans ma configuration si j'en ai besoin, comme lire l'url de redistogo d'heroku:
la source
Rails 4
Pour créer un yaml de configuration personnalisé et le charger (et le rendre disponible pour votre application) de la même manière
database_configuration
.Créez votre
*.yml
, dans mon cas, j'avais besoin d'un fichier de configuration redis.config/redis.yml
Puis chargez la configuration
config/application.rb
Accédez aux valeurs:
Rails.configuration.redis_configuration[Rails.env]
semblable à la façon dont vous pouvez avoir accès à votredatabase.yml
parRails.configuration.database_configuration[Rails.env]
la source
Rails.configuration.redis_configuration = YAML.load_file("#{Rails.root}/config/redis.yml")[Rails.env]
. Cependant, dans les rails 4.2 et supérieurs, la réponse de smathy est probablement un moyen plus simple.En m'appuyant sur la solution élégante d'Omer Aslam, j'ai décidé de convertir les clés en symboles. Le seul changement est:
Cela vous permet ensuite de référencer les valeurs par des symboles sous forme de clés, par ex.
Cela me semble plus net.
(Posté comme réponse car ma réputation n'est pas assez élevée pour commenter la réponse d'Omer)
la source
J'aime simpleconfig . Il vous permet d'avoir une configuration par environnement.
la source
voir ma réponse à Où est le meilleur endroit pour stocker les paramètres de l'application: base de données, fichier, code ...?
Une variante de ce que vous aviez en ce sens qu'il s'agit d'une simple référence à un autre fichier. Il voit que environment.rb n'est pas constamment mis à jour et ne contient pas un tas de choses spécifiques à l'application. Bien que ce ne soit pas une réponse spécifique à votre question «est-ce la voie Rails?», Il y aura peut-être une discussion à ce sujet.
la source
Je préfère accéder aux paramètres via la pile d'applications globale. J'évite les variables globales excessives dans la portée locale.
config / initialiseurs / myconfig.rb
Et accédez-y avec.
la source
Ma façon de charger les paramètres avant l'initialisation des rails
Vous permet d'utiliser les paramètres dans l'initialisation de Rails et de configurer les paramètres par environnement
Vous pouvez obtenir les paramètres de deux manières: Paramètres ['email'] ou Settings.email
la source
Ma meilleure façon de personnaliser la configuration, avec un message de relance lorsque setting.yml est manquant.
est chargé à partir d'un initialiseur personnalisé dans config / initializers / custom_config.rb
Créez un YAML dans config / setting.yml
la source