mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added a generator generator.
This commit is contained in:
parent
a5ab030ae4
commit
52673cd2ee
5 changed files with 76 additions and 0 deletions
11
railties/lib/generators/rails/generator/USAGE
Normal file
11
railties/lib/generators/rails/generator/USAGE
Normal file
|
@ -0,0 +1,11 @@
|
|||
Description:
|
||||
Stubs out a new generator at lib/generators. Pass the generator name, either
|
||||
CamelCased or under_scored, as an argument.
|
||||
|
||||
Example:
|
||||
`./script/generate generator Awesome`
|
||||
|
||||
creates a standard awesome generator:
|
||||
lib/generators/awesome/
|
||||
lib/generators/awesome/awesome_generator.rb
|
||||
lib/generators/awesome/templates/
|
|
@ -0,0 +1,26 @@
|
|||
module Rails
|
||||
module Generators
|
||||
class GeneratorGenerator < NamedBase
|
||||
check_class_collision :suffix => "Generator"
|
||||
|
||||
def copy_generator_file
|
||||
template "generator.rb", generator_dir("#{file_name}_generator.rb")
|
||||
end
|
||||
|
||||
def copy_usage_file
|
||||
template "USAGE", generator_dir("USAGE")
|
||||
end
|
||||
|
||||
def create_templates_dir
|
||||
empty_directory generator_dir("templates")
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def generator_dir(join)
|
||||
File.join("lib", "generators", file_name, join)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
8
railties/lib/generators/rails/generator/templates/USAGE
Normal file
8
railties/lib/generators/rails/generator/templates/USAGE
Normal file
|
@ -0,0 +1,8 @@
|
|||
Description:
|
||||
Explain the generator
|
||||
|
||||
Example:
|
||||
./script/generate <%= file_name %> Thing
|
||||
|
||||
This will create:
|
||||
what/will/it/create
|
|
@ -0,0 +1,5 @@
|
|||
class <%= class_name %>Generator < Rails::Generators::NamedBase
|
||||
def self.source_root
|
||||
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
||||
end
|
||||
end
|
26
railties/test/generators/generator_generator_test.rb
Normal file
26
railties/test/generators/generator_generator_test.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
require 'abstract_unit'
|
||||
require 'generators/generators_test_helper'
|
||||
require 'generators/rails/generator/generator_generator'
|
||||
|
||||
class GeneratorGeneratorTest < GeneratorsTestCase
|
||||
|
||||
def test_generator_skeleton_is_created
|
||||
run_generator
|
||||
|
||||
%w(
|
||||
lib/generators/awesome
|
||||
lib/generators/awesome/USAGE
|
||||
lib/generators/awesome/templates
|
||||
).each{ |path| assert_file path }
|
||||
|
||||
assert_file "lib/generators/awesome/awesome_generator.rb",
|
||||
/class AwesomeGenerator < Rails::Generators::NamedBase/
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def run_generator(args=["awesome"], config={})
|
||||
silence(:stdout) { Rails::Generators::GeneratorGenerator.start args, config.merge(:root => destination_root) }
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue