From 35c4df4aa5812abcd5928c31c1e673e32434b751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 30 Jun 2009 10:20:11 +0200 Subject: Added scaffold_controller. --- railties/lib/generators/base.rb | 12 ++++++++---- .../generators/rails/migration/migration_generator.rb | 2 +- railties/lib/generators/rails/model/model_generator.rb | 2 +- .../generators/rails/observer/observer_generator.rb | 2 +- .../generators/rails/scaffold/scaffold_generator.rb | 3 ++- .../lib/generators/rails/scaffold_controller/USAGE | 18 ++++++++++++++++++ .../scaffold_controller_generator.rb | 14 ++++++++++++++ .../rails/scaffold_controller/templates/controller.rb | 2 ++ .../session_migration/session_migration_generator.rb | 2 +- 9 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 railties/lib/generators/rails/scaffold_controller/USAGE create mode 100644 railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb create mode 100644 railties/lib/generators/rails/scaffold_controller/templates/controller.rb (limited to 'railties/lib') diff --git a/railties/lib/generators/base.rb b/railties/lib/generators/base.rb index 1bd8154e8c..47c93636b4 100644 --- a/railties/lib/generators/base.rb +++ b/railties/lib/generators/base.rb @@ -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} diff --git a/railties/lib/generators/rails/migration/migration_generator.rb b/railties/lib/generators/rails/migration/migration_generator.rb index cfaa5f0ad2..29d1238072 100644 --- a/railties/lib/generators/rails/migration/migration_generator.rb +++ b/railties/lib/generators/rails/migration/migration_generator.rb @@ -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 diff --git a/railties/lib/generators/rails/model/model_generator.rb b/railties/lib/generators/rails/model/model_generator.rb index e05c89517e..2e13f6f3cb 100644 --- a/railties/lib/generators/rails/model/model_generator.rb +++ b/railties/lib/generators/rails/model/model_generator.rb @@ -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 diff --git a/railties/lib/generators/rails/observer/observer_generator.rb b/railties/lib/generators/rails/observer/observer_generator.rb index 1d99f309e0..9332c3542a 100644 --- a/railties/lib/generators/rails/observer/observer_generator.rb +++ b/railties/lib/generators/rails/observer/observer_generator.rb @@ -1,6 +1,6 @@ module Rails module Generators - class ObserverGenerator < NamedBase + class ObserverGenerator < NamedBase #metagenerator hook_for :orm end end diff --git a/railties/lib/generators/rails/scaffold/scaffold_generator.rb b/railties/lib/generators/rails/scaffold/scaffold_generator.rb index 1386000d9b..73ec294cf0 100644 --- a/railties/lib/generators/rails/scaffold/scaffold_generator.rb +++ b/railties/lib/generators/rails/scaffold/scaffold_generator.rb @@ -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 diff --git a/railties/lib/generators/rails/scaffold_controller/USAGE b/railties/lib/generators/rails/scaffold_controller/USAGE new file mode 100644 index 0000000000..2570da2e85 --- /dev/null +++ b/railties/lib/generators/rails/scaffold_controller/USAGE @@ -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 diff --git a/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb b/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb new file mode 100644 index 0000000000..4d36b6603b --- /dev/null +++ b/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb @@ -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 diff --git a/railties/lib/generators/rails/scaffold_controller/templates/controller.rb b/railties/lib/generators/rails/scaffold_controller/templates/controller.rb new file mode 100644 index 0000000000..6bf38cb9b4 --- /dev/null +++ b/railties/lib/generators/rails/scaffold_controller/templates/controller.rb @@ -0,0 +1,2 @@ +class <%= class_name %>Controller < ApplicationController +end diff --git a/railties/lib/generators/rails/session_migration/session_migration_generator.rb b/railties/lib/generators/rails/session_migration/session_migration_generator.rb index e7d988359c..5812c40e55 100644 --- a/railties/lib/generators/rails/session_migration/session_migration_generator.rb +++ b/railties/lib/generators/rails/session_migration/session_migration_generator.rb @@ -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 -- cgit v1.2.3