diff options
Diffstat (limited to 'railties/lib/generators')
-rw-r--r-- | railties/lib/generators/base.rb | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/railties/lib/generators/base.rb b/railties/lib/generators/base.rb index 0ef6d061ff..4c38e0f5be 100644 --- a/railties/lib/generators/base.rb +++ b/railties/lib/generators/base.rb @@ -6,15 +6,16 @@ module Rails end class Base < Thor::Group + include Thor::Actions + include Rails::Generators::Actions + # Automatically sets the source root based on the class name. # def self.source_root - File.expand_path(File.join(File.dirname(__FILE__), base_name, generator_name, 'templates')) + @_rails_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), + base_name, generator_name, 'templates')) end - include Thor::Actions - include Rails::Generators::Actions - # Tries to get the description from a USAGE file one folder above the source # root otherwise uses a default description. # @@ -148,6 +149,19 @@ module Rails super(name, options) end + # Cache source root and add lib/generators/base/generator/templates to + # source paths. + # + def self.inherited(base) #:nodoc: + super + base.source_root # Cache source root + + if defined?(RAILS_ROOT) && base.name !~ /Base$/ + path = File.expand_path(File.join(RAILS_ROOT, 'lib', 'templates')) + base.source_paths << File.join(path, base.base_name, base.generator_name) + end + end + protected # Check whether the given class names are already taken by user |