Added scaffold_controller.

This commit is contained in:
José Valim
2009-06-30 10:20:11 +02:00
parent 00b168e9d0
commit 35c4df4aa5
9 changed files with 48 additions and 9 deletions

View File

@@ -8,6 +8,7 @@ module Rails
:migration => true,
:orm => 'active_record',
:resource_controller => 'controller',
:scaffold_controller => 'scaffold_controller',
:test_framework => 'test_unit',
:template_engine => 'erb',
:timestamps => true
@@ -17,6 +18,7 @@ module Rails
:fixture_replacement => '-r',
:orm => '-o',
:resource_controller => '-c',
:scaffold_controller => '-c',
:test_framework => '-t',
:template_engine => '-e'
}
@@ -109,10 +111,11 @@ module Rails
def self.hook_for(*names, &block)
default_class_options(*names)
options = names.extract_options!
as = options.fetch(:as, generator_name)
verbose = options.fetch(:verbose, :blue)
names.each do |name|
invocations << [ name, base_name, generator_name ]
invocations << [ name, base_name, as ]
invocation_blocks[name] = block if block_given?
class_eval <<-METHOD, __FILE__, __LINE__
@@ -120,7 +123,7 @@ module Rails
return unless options[#{name.inspect}]
klass = Rails::Generators.find_by_namespace(options[#{name.inspect}],
#{base_name.inspect}, #{generator_name.inspect})
#{base_name.inspect}, #{as.inspect})
if klass
say_status :invoke, options[#{name.inspect}], #{verbose.inspect}
@@ -164,10 +167,11 @@ module Rails
def self.invoke_if(*names, &block)
conditional_class_options(*names)
options = names.extract_options!
as = options.fetch(:as, generator_name)
verbose = options.fetch(:verbose, :blue)
names.each do |name|
invocations << [ name, base_name, generator_name ]
invocations << [ name, base_name, as ]
invocation_blocks[name] = block if block_given?
class_eval <<-METHOD, __FILE__, __LINE__
@@ -175,7 +179,7 @@ module Rails
return unless options[#{name.inspect}]
klass = Rails::Generators.find_by_namespace(#{name.inspect},
#{base_name.inspect}, #{generator_name.inspect})
#{base_name.inspect}, #{as.inspect})
if klass
say_status :invoke, #{name.inspect}, #{verbose.inspect}

View File

@@ -1,6 +1,6 @@
module Rails
module Generators
class MigrationGenerator < NamedBase
class MigrationGenerator < NamedBase #metagenerator
argument :attributes, :type => :hash, :default => {}, :banner => "field:type field:type"
hook_for :orm
end

View File

@@ -1,6 +1,6 @@
module Rails
module Generators
class ModelGenerator < NamedBase
class ModelGenerator < NamedBase #metagenerator
argument :attributes, :type => :hash, :default => {}, :banner => "field:type field:type"
hook_for :orm
end

View File

@@ -1,6 +1,6 @@
module Rails
module Generators
class ObserverGenerator < NamedBase
class ObserverGenerator < NamedBase #metagenerator
hook_for :orm
end
end

View File

@@ -2,8 +2,9 @@ require 'generators/rails/resource/resource_generator'
module Rails
module Generators
class ScaffoldGenerator < ResourceGenerator
class ScaffoldGenerator < ResourceGenerator #metagenerator
remove_hook_for :actions, :resource_controller
hook_for :scaffold_controller
end
end
end

View File

@@ -0,0 +1,18 @@
Description:
Stubs out a scaffolded controller and its views. Pass the controller name,
either CamelCased or under_scored, and a list of views as arguments.
To create a controller within a module, specify the controller name as a
path like 'parent_module/controller_name'.
This generates a controller class in app/controllers and invokes helper,
template engine and test framework generators.
Example:
`./script/generate scaffold_controller CreditCard open debit credit close`
Credit card controller with URLs like /credit_card/debit.
Controller: app/controllers/credit_card_controller.rb
Functional Test: test/functional/credit_card_controller_test.rb
Views: app/views/credit_card/debit.html.erb [...]
Helper: app/helpers/credit_card_helper.rb

View File

@@ -0,0 +1,14 @@
module Rails
module Generators
class ScaffoldControllerGenerator < NamedBase
check_class_collision :suffix => "Controller"
def create_controller_files
template 'controller.rb', File.join('app/controllers', class_path, "#{file_name}_controller.rb")
end
hook_for :template_engine, :test_framework, :as => :scaffold
invoke_if :helper
end
end
end

View File

@@ -0,0 +1,2 @@
class <%= class_name %>Controller < ApplicationController
end

View File

@@ -1,6 +1,6 @@
module Rails
module Generators
class SessionMigrationGenerator < NamedBase
class SessionMigrationGenerator < NamedBase #metagenerator
argument :name, :type => :string, :default => "add_session_table"
hook_for :orm
end