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.