1
0
Fork 0
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:
José Valim 2009-07-13 23:01:12 +02:00
parent a5ab030ae4
commit 52673cd2ee
5 changed files with 76 additions and 0 deletions

View 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/

View file

@ -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

View file

@ -0,0 +1,8 @@
Description:
Explain the generator
Example:
./script/generate <%= file_name %> Thing
This will create:
what/will/it/create

View file

@ -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

View 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