diff options
-rw-r--r-- | railties/lib/rails_generator/lookup.rb | 10 | ||||
-rw-r--r-- | railties/test/rails_generator_test.rb | 14 |
2 files changed, 16 insertions, 8 deletions
diff --git a/railties/lib/rails_generator/lookup.rb b/railties/lib/rails_generator/lookup.rb index ca46afa418..598cb79e73 100644 --- a/railties/lib/rails_generator/lookup.rb +++ b/railties/lib/rails_generator/lookup.rb @@ -92,9 +92,13 @@ module Rails # 1. Rails application. If RAILS_ROOT is defined we know we're # generating in the context of a Rails application, so search # RAILS_ROOT/generators. - # 2. User home directory. Search ~/.rails/generators. - # 3. RubyGems. Search for gems named *_generator. - # 4. Builtins. Model, controller, mailer, scaffold. + # 2. Look in plugins, either for generators/ or rails_generators/ + # directories within each plugin + # 3. User home directory. Search ~/.rails/generators. + # 4. RubyGems. Search for gems named *_generator, and look for + # generators within any RubyGem's + # /rails_generators/<generator_name>_generator.rb file. + # 5. Builtins. Model, controller, mailer, scaffold, and so on. def use_component_sources! reset_sources if defined? ::RAILS_ROOT diff --git a/railties/test/rails_generator_test.rb b/railties/test/rails_generator_test.rb index 9d8f91abaf..eac3a3d176 100644 --- a/railties/test/rails_generator_test.rb +++ b/railties/test/rails_generator_test.rb @@ -37,7 +37,7 @@ require 'rails_generator' class RailsGeneratorTest < Test::Unit::TestCase - BUILTINS = %w(controller mailer model scaffold) + BUILTINS = %w(controller integration_test mailer migration model observer plugin resource scaffold session_migration web_service) CAPITALIZED_BUILTINS = BUILTINS.map { |b| b.capitalize } def setup @@ -45,8 +45,12 @@ class RailsGeneratorTest < Test::Unit::TestCase end def test_sources - expected = [:lib, :vendor, :plugins, :user, :RubyGems, :builtin] - expected.delete(:gem) unless Object.const_defined?(:Gem) + expected = [:lib, :vendor, + :plugins, :plugins, # <plugin>/generators and <plugin>/rails_generators + :user, + :RubyGems, :RubyGems, # gems named <x>_generator, gems containing /rails_generator/ folder + :builtin] + expected.delete(:RubyGems) unless Object.const_defined?(:Gem) assert_equal expected, Rails::Generator::Base.sources.map { |s| s.label } end @@ -84,8 +88,8 @@ class RailsGeneratorTest < Test::Unit::TestCase end def test_generator_usage - BUILTINS.each do |name| - assert_raise(Rails::Generator::UsageError) { + (BUILTINS - ["session_migration"]).each do |name| + assert_raise(Rails::Generator::UsageError, "Generator '#{name}' should raise an error without arguments") { Rails::Generator::Base.instance(name) } end |