diff options
Diffstat (limited to 'railties/lib/generators/base.rb')
-rw-r--r-- | railties/lib/generators/base.rb | 80 |
1 files changed, 47 insertions, 33 deletions
diff --git a/railties/lib/generators/base.rb b/railties/lib/generators/base.rb index 5f0b3eb369..fe4ec2a19a 100644 --- a/railties/lib/generators/base.rb +++ b/railties/lib/generators/base.rb @@ -2,6 +2,7 @@ require 'generators/actions' module Rails module Generators + class Error < Thor::Error end @@ -12,7 +13,7 @@ module Rails # Automatically sets the source root based on the class name. # def self.source_root - @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'rails', generator_name, 'templates')) + @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), base_name, generator_name, 'templates')) end # Convenience method to get the namespace from the class name. @@ -21,50 +22,63 @@ module Rails if name super else - @namespace ||= "rails:generators:#{generator_name}" + @namespace ||= "#{base_name}:#{generator_name}" end end - protected + protected - # Use Rails default banner. - # - def self.banner - "#{$0} #{generator_name} #{self.arguments.map(&:usage).join(' ')} [options]" - end + # Use Rails default banner. + # + def self.banner + "#{$0} #{generator_name} #{self.arguments.map(&:usage).join(' ')} [options]" + end - # Removes the namespaces and get the generator name. For example, - # Rails::Generators::MetalGenerator will return "metal" as generator name. - # - # The name is used to set the namespace (in this case "rails:generators:metal") - # and to set the source root ("generators/metal/templates"). - # - def self.generator_name - @generator_name ||= begin - klass_name = self.name.gsub(/^Rails::Generators::/, '') - klass_name.gsub!(/Generator$/, '') - klass_name.underscore + # Sets the base_name. Overwriten by test unit generators. + # + def self.base_name + 'rails' end - end - # Small macro to add ruby as an option to the generator with proper - # default value plus an instance helper method called shebang. - # - def self.add_shebang_option! - require 'rbconfig' - default = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) + # Removes the namespaces and get the generator name. For example, + # Rails::Generators::MetalGenerator will return "metal" as generator name. + # + # The name is used to set the namespace (in this case "rails:metal") + # and to set the source root ("rails/metal/templates"). + # + def self.generator_name + @generator_name ||= begin + klass_name = self.name.gsub(/^Rails::Generators::/, '') + klass_name.gsub!(/Generator$/, '') + klass_name.underscore + end + end - class_option :ruby, :type => :string, :aliases => "-r", :default => default, - :desc => "Path to the Ruby binary of your choice" + # Small macro to add ruby as an option to the generator with proper + # default value plus an instance helper method called shebang. + # + def self.add_shebang_option! + require 'rbconfig' + default = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) - class_eval do - protected - def shebang - "#!#{options[:ruby] || "/usr/bin/env ruby"}" + class_option :ruby, :type => :string, :aliases => "-r", :default => default, + :desc => "Path to the Ruby binary of your choice" + + class_eval do + protected + def shebang + "#!#{options[:ruby] || "/usr/bin/env ruby"}" + end end end - end + end + class TestUnit < Base + protected + def self.base_name + 'testunit' + end end + end end |