Generator scripts handle command-line invocation. Each script responds to an invoke! class method which handles option parsing and generator invocation.

Methods
Included Modules
Public Instance methods
run(args = [], runtime_options = {})

Run the generator script. Takes an array of unparsed arguments and a hash of parsed arguments, takes the generator as an option or first remaining argument, and invokes the requested command.

    # File railties/lib/rails_generator/scripts.rb, line 17
17:         def run(args = [], runtime_options = {})
18:           begin
19:             parse!(args.dup, runtime_options)
20:           rescue OptionParser::InvalidOption => e
21:             # Don't cry, script. Generators want what you think is invalid.
22:           end
23: 
24:           # Generator name is the only required option.
25:           unless options[:generator]
26:             usage if args.empty?
27:             options[:generator] ||= args.shift
28:           end
29: 
30:           # Look up generator instance and invoke command on it.
31:           Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
32:         rescue => e
33:           puts e
34:           puts "  #{e.backtrace.join("\n  ")}\n" if options[:backtrace]
35:           raise SystemExit
36:         end
Protected Instance methods
banner()

Override with your own script usage banner.

    # File railties/lib/rails_generator/scripts.rb, line 40
40:           def banner
41:             "Usage: #{$0} generator [options] [args]"
42:           end
usage_message()
    # File railties/lib/rails_generator/scripts.rb, line 44
44:           def usage_message
45:             usage = "\nInstalled Generators\n"
46:             Rails::Generator::Base.sources.inject([]) do |mem, source|
47:               # Using an association list instead of a hash to preserve order,
48:               # for aesthetic reasons more than anything else.
49:               label = source.label.to_s.capitalize
50:               pair = mem.assoc(label)
51:               mem << (pair = [label, []]) if pair.nil?
52:               pair[1] |= source.names
53:               mem
54:             end.each do |label, names|
55:               usage << "  #{label}: #{names.join(', ')}\n" unless names.empty?
56:             end
57: 
58:             usage << "\nMore are available at http://wiki.rubyonrails.org/rails/pages/AvailableGenerators\n  1. Download, for example, login_generator.zip\n  2. Unzip to directory \#{Dir.user_home}/.rails/generators/login\n     to use the generator with all your Rails apps\n"
59: 
60:             if Object.const_defined?(:RAILS_ROOT)
61:               usage << "     or to \#{File.expand_path(RAILS_ROOT)}/lib/generators/login\n     to use with this app only.\n"
62:             end
63: 
64:             usage << "  3. Run generate with no arguments for usage information\n       \#{$0} login\n\nGenerator gems are also available:\n  1. gem search -r generator\n  2. gem install login_generator\n  3. \#{$0} login\n\n"
65:             return usage
66:           end