[ruby-on-rails] Comment définir des variables de configuration personnalisées dans des rails



6 Answers

Dans Rails 3, des données de configuration personnalisées spécifiques à l'application peuvent être placées dans l'objet de configuration de l'application. La configuration peut être affectée dans les fichiers d'initialisation ou les fichiers d'environnement - disons pour une application donnée MyApp :

MyApp::Application.config.custom_config_variable = :my_config_setting

ou

Rails.configuration.custom_config_variable = :my_config_setting

Pour lire le paramètre, appelez simplement la variable de configuration sans la définir:

Rails.configuration.custom_config_variable
=> :my_config_setting

UPDATE Rails 4

Dans Rails 4, il existe une nouvelle méthode pour cela => http://guides.rubyonrails.org/configuring.html#custom-configuration

Question

Je me demandais comment ajouter des variables de configuration personnalisées à une application rails et comment y accéder dans le contrôleur, par exemple je veux pouvoir définir un répertoire upload_directory dans les fichiers de configuration dites development.rb et pouvoir y accéder dans l'un de mes contrôleurs.

Deuxièmement, je prévoyais d'avoir le support S3 pour les téléchargements dans mon application, si je voulais ajouter un fichier yaml avec l'accès s3, clé secrète, comment l'initialiser dans mon application Rails et comment accéder aux valeurs que j'ai définies dans ce fichier de configuration.




Depuis Rails 4.2, sans gems supplémentaires, vous pouvez charger config / hi.yml simplement en utilisant Rails.application.config_for :hi .

Par exemple:

  1. touch config/passwords.yml

        #config/passwords.yml
        development:
          username: 'a'
          password: 'b'
        production:
          username: 'aa'
          password: 'bb'
    
  1. touch config/initializers/constants.rb

    #config/initializers/constants.rb
    AUTHENTICATION = Rails.application.config_for :passwords
    
  1. et maintenant vous pouvez utiliser la constante AUTHENTICATION partout dans votre application:

    #rails c production
    :001> AUTHENTICATION['username'] => 'aa'
    
  2. puis ajoutez les mots de passe.yml à .gitignore : echo /config/passwords.yml >> .gitignore , créez un exemple de fichier pour votre confort cp /config/passwords.yml /config/passwords.example.yml puis modifiez simplement votre fichier d'exemple dans votre console de production avec des valeurs de production réelles.




Je suggère une bonne approche sur la façon de gérer la configuration de votre application. Il y a trois règles de base:

  • changez votre configuration pas un code;
  • utiliser des configurations au-dessus des conditions;
  • écrire du code qui signifie quelque chose.

Pour avoir un aperçu plus détaillé, suivez ce lien: Configuration des rails correctement




J'aime utiliser les rails-settings de rails-settings pour les valeurs de configuration globales qui doivent être modifiables via l'interface Web.




Jetez un coup d'œil à ce petit bijou: https://github.com/mislav/choices

De cette façon, vos données sensibles ne seront pas exposées dans des projets open source







Cela fonctionne dans les rails 3.1:

dans config / environment.rb (ou dans config / environments / .. pour cibler un environnement spécifique):

YourApp::Application.config.yourKey = 'foo'

Ce sera accessible dans le contrôleur ou des vues comme ceci:

YourApp::Application.config.yourKey

(Votre application doit être remplacée par le nom de votre application.)

Note : C'est du code Ruby, donc si vous avez beaucoup de clés de configuration, vous pouvez faire ceci:

dans config / environment.rb:

YourApp::Application.configure do
  config.something = foo
  config.....
  config....
  .
  config....
end



Related