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