Choisir l'ordre de chargement des plugins avec Rails

Bonjour,

Je cherche comment choisir l’ordre de chargement des plugins.

J’utilise le plugin localization afin de traduire une application. En
ce qui concerne les vues de l’application pas de soucis.
Mais dès qu’il s’agit de localiser les plugins rails utilisés par
cette même application, plus moyen, ils ne trouvent plus
localization. J’imagine que c’est parce que le plugin n’a pas encore
été
chargé.
Quelqu’un a une idée ?

Merci d’avance,
Frédéric

Frédéric de Villamil
[email protected] tel: +33 (0)6 62 19 1337
http://fredericdevillamil.com

Frédéric :

Je cherche comment choisir l’ordre de chargement des plugins.

J’utilise le plugin localization afin de traduire une application. En
ce qui concerne les vues de l’application pas de soucis.
Mais dès qu’il s’agit de localiser les plugins rails utilisés par
cette même application, plus moyen, ils ne trouvent plus
localization. J’imagine que c’est parce que le plugin n’a pas
encore été chargé.

Tu peux spécifier l’ordre de chargement des plugins dans
config/environment.rb avec config.plugins :

Rails::Initializer.run do |config|

config.plugins = [ ‘localization’, ‘ga’, ‘meu’, ‘zo’, ‘bu’, … ]

end

– Jean-François.

Le 4 mars 07 à 22:11, Jean-François Trân a écrit :

config/environment.rb avec config.plugins :

Rails::Initializer.run do |config|

config.plugins = [ ‘localization’, ‘ga’, ‘meu’, ‘zo’, ‘bu’, … ]

end

Merci, en fait j’ai trouvé il y a une heure, en faisant comme
ça config.plugins = [ ‘localization’ ]
Dir.entries(“#{RAILS_ROOT}/vendor/plugins/”).each { |dir|
config.plugins.push(“#{dir}”) if File.directory?(“#{RAILS_ROOT}/
vendor/plugins/#{dir}/lib”) }

Ça permet de charger tous les plugins présents et pas seulement ceux
fournis avec l’application


Frédéric de Villamil
[email protected] tel: +33 (0)6 62 19 1337
http://fredericdevillamil.com

Frédéric :

Dir.entries("#{RAILS_ROOT}/vendor/plugins/").each { |dir|
config.plugins.push("#{dir}") if File.directory?("#{RAILS_ROOT}/
vendor/plugins/#{dir}/lib") }

Ça permet de charger tous les plugins présents et pas seulement
ceux fournis avec l’application

En reprenant tes hypothèses, à savoir, recherche uniquement dans le
répertoire par défaut vendor/plugins, pas de recherche récursive,
pas de test sur init.rb (et oui, il y a des plugins avec le code dans
init.rb et pas de lib/ . Exemple simply_bdd), on peut réécrire
ton code comme ceci :

path = config.plugin_paths.first
config.plugins = %w(localization) +
Dir.entries(path).select { |dir|
File.directory?(File.join(path, dir, ‘lib’)) }

C’est plus idiomatique et plus clair à mon avis.

– Jean-François.