diff options
Diffstat (limited to 'railties/lib/rails/plugin')
-rw-r--r-- | railties/lib/rails/plugin/locator.rb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/railties/lib/rails/plugin/locator.rb b/railties/lib/rails/plugin/locator.rb index b27e904b12..0b7923cfb6 100644 --- a/railties/lib/rails/plugin/locator.rb +++ b/railties/lib/rails/plugin/locator.rb @@ -72,7 +72,26 @@ module Rails plugins end end - + end + + # The GemLocator scans all the loaded RubyGems, looking for gems with + # a <tt>rails/init.rb</tt> file. + class GemLocator < Locator + def plugins + specs = Gem.loaded_specs.values.select do |spec| + spec.loaded_from && # prune stubs + File.exist?(File.join(spec.full_gem_path, "rails", "init.rb")) + end + + require "rubygems/dependency_list" + + deps = Gem::DependencyList.new + deps.add(*specs) + + deps.dependency_order.collect do |spec| + Rails::GemPlugin.new(spec) + end + end end end end
\ No newline at end of file |