Comment modifier l’ordre de chargement des initialiseurs dans Rails 3?

J’ai un initialiseur qui charge les parameters de configuration à partir d’un fichier yaml. Je dois utiliser ces parameters dans d’autres initialiseurs. Les parameters ne sont pas visibles par les initialiseurs qui en ont besoin. Ce que je pense, c’est que les parameters sont chargés trop tard. Comment puis-je garantir que mon initialiseur de configuration est chargé en premier? Est-ce que les dé-rails aiment avoir des initialiseurs dépendant des autres?

Merci!

Renommez l’initialiseur en 01_name.rb , ce qui le forcera à charger alphabétiquement précédemment.

modifier

Pour citer le guide officiel Rails pour la configuration (merci zetetic pour le conseil):

Si vous avez une dépendance de classement dans vos initialiseurs, vous pouvez contrôler l’ordre de chargement en nommant. Par exemple, 01_critical.rb sera chargé avant 02_normal.rb.

Placez le code de configuration dans le fichier config / environment.rb, juste après la première instruction, par exemple:

 # Load the rails application require File.expand_path('../application', __FILE__) # Load global configurations CONFIG = Hashie::Mash.new YAML.load_file(Rails.root.join("config", "application.yml"))[Rails.env] # Initialize the rails application RailsSetup::Application.initialize! 

Même si le guide recommande d’append les noms de fichiers à l’initialiseur, cela semble moche. Une autre méthode consiste à utiliser les crochets d’initialisation fournis. Voir http://guides.rubyonrails.org/configuring.html#initialization-events

Par exemple

 # application.rb module YourApp class Application < Rails::Application config.before_initialize do # initialization code goes here end end end 

Utilisez un require_relative pour vous assurer qu’un fichier est chargé en premier.

 # aaa.rb require_relative 'bbb' # ... code using values from bbb.rb ...