Config.plugins doesn't work


#1

Hi,

I see references to using config.plugins like so:

config.plugins = [
‘plugin_dependencies’,
“*”
]

in the engines and appable plugins worlds (et al). Reading the
initializer
code I just can’t see how this would work, and in fact it doesn’t for me
(nor does my lame hack [1]),. Can anyone tell me how I might tell the
initializer to load plugin A, then B, then everything else?

Thanks,

pt.

[1]

config.plugins = [
‘plugin_dependencies’
] +
Rails::Initializer.new(config).send(:find_plugins,
“./vendor/plugins”).collect do |path|
path.gsub!(/^.+/(.+)$/, ‘\1’)
end


#2

Parker

I see references to using config.plugins like so:

I don’t know about the Engine way to handle this, but in standard Rails
I use
config.plugin_paths
to tell Rails where to find extra plugins.

For example, I move all my development-only plugins to a separate
directory
vendor/plugins-development

, and I link to it by adding
config.plugin_paths.push(‘vendor/plugins-development’ ).uniq!
in development.rb

more details here:
http://blog.ravet.com/2007/05/rails-plugins-sortbyenvironment.html

Alain R.

http://blog.ravet.com


#3

The engines plugin overrides the default Rails initializer code to
achieve this. You can see the code in the following files:

http://svn.rails-engines.org/plugins/engines/lib/engines.rb
http://svn.rails-engines.org/plugins/engines/lib/engines/rails_extensions/rails_initializer.rb

In the “vanilla” rails, there’s no way to say “load A, then B, then
everything else in any order”, which is why I had to implement it
myself. Hooking into the initializer is tricky from a plugin (since
you’re overriding the very mechanism that’s loading your changes), but
if you spend some time looking at the engines plugin code you should
be able to figure out which parts I needed to change.

James