aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-07-01 20:30:47 +0200
committerJosé Valim <jose.valim@gmail.com>2009-07-02 10:27:40 +0200
commit7f7afdf0f11b6748ace1ee48f8d604637058001e (patch)
tree8412da6cf7abaa9cccb62fc4fbb9e43f660b41c4 /railties
parent1a4d8aca8a675aa02cead4b1db53ba5a3f9aa326 (diff)
downloadrails-7f7afdf0f11b6748ace1ee48f8d604637058001e.tar.gz
rails-7f7afdf0f11b6748ace1ee48f8d604637058001e.tar.bz2
rails-7f7afdf0f11b6748ace1ee48f8d604637058001e.zip
Rename ControllerNamedBase to ScaffoldBase and move ActionORM helpers.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/generators/erb/scaffold/scaffold_generator.rb2
-rw-r--r--railties/lib/generators/named_base.rb41
-rw-r--r--railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb19
-rw-r--r--railties/lib/generators/test_unit/scaffold/scaffold_generator.rb2
4 files changed, 39 insertions, 25 deletions
diff --git a/railties/lib/generators/erb/scaffold/scaffold_generator.rb b/railties/lib/generators/erb/scaffold/scaffold_generator.rb
index ad40fe47ae..618742dde6 100644
--- a/railties/lib/generators/erb/scaffold/scaffold_generator.rb
+++ b/railties/lib/generators/erb/scaffold/scaffold_generator.rb
@@ -3,7 +3,7 @@ require 'generators/erb'
module Erb
module Generators
class ScaffoldGenerator < Base
- include Rails::Generators::ControllerNamedBase
+ include Rails::Generators::ScaffoldBase
argument :attributes, :type => :hash, :default => {}, :banner => "field:type field:type"
diff --git a/railties/lib/generators/named_base.rb b/railties/lib/generators/named_base.rb
index fd7b8369c4..8f44000729 100644
--- a/railties/lib/generators/named_base.rb
+++ b/railties/lib/generators/named_base.rb
@@ -23,7 +23,7 @@ module Rails
base_name, @class_path, @file_path, class_nesting, @class_nesting_depth = extract_modules(given_name)
class_name_without_nesting, @singular_name, @plural_name = inflect_names(base_name)
- @table_name = if !defined?(ActiveRecord::Base) || ActiveRecord::Base.pluralize_table_names
+ @table_name = if pluralize_table_names?
plural_name
else
singular_name
@@ -69,6 +69,10 @@ module Rails
[camel, under, plural]
end
+ def pluralize_table_names?
+ !defined?(ActiveRecord::Base) || ActiveRecord::Base.pluralize_table_names
+ end
+
# Add a class collisions name to be checked on class initialization. You
# can supply a hash with a :prefix or :suffix to be tested.
#
@@ -81,7 +85,7 @@ module Rails
#
def self.check_class_collision(options={})
define_method :check_class_collision do
- name = if self.respond_to?(:controller_class_name) # for ControllerNamedBase
+ name = if self.respond_to?(:controller_class_name) # for ScaffoldBase
controller_class_name
else
class_name
@@ -92,9 +96,10 @@ module Rails
end
end
- # Deal with controller named base on scaffold.
+ # Deal with controller names on scaffold. Also provide helpers to deal with
+ # ActionORM.
#
- module ControllerNamedBase
+ module ScaffoldBase
def self.included(base) #:nodoc:
base.send :attr_reader, :controller_name, :controller_class_name, :controller_file_name,
:controller_class_path, :controller_file_path
@@ -102,7 +107,7 @@ module Rails
# Set controller variables on initialization.
#
- def initialize(*args)
+ def initialize(*args) #:nodoc:
super
@controller_name = name.pluralize
@@ -115,7 +120,31 @@ module Rails
"#{class_nesting}::#{class_name_without_nesting}"
end
end
- end
+ protected
+
+ # Loads the ORM::Generators::ActionORM class. This class is responsable
+ # to tell scaffold entities how to generate an specific method for the
+ # ORM. Check Rails::Generators::ActionORM for more information.
+ #
+ def orm_class
+ @orm_class ||= begin
+ unless self.class.class_options[:orm]
+ raise "You need to have :orm as class option to invoke orm_class and orm_instance"
+ end
+
+ action_orm = "#{options[:orm].to_s.classify}::Generators::ActionORM"
+ action_orm.constantize
+ rescue NameError => e
+ raise Error, "Could not load #{action_orm}, skipping controller. Error: #{e.message}."
+ end
+ end
+
+ # Initialize ORM::Generators::ActionORM to access instance methods.
+ #
+ def orm_instance(name=file_name)
+ @orm_instance ||= @orm_class.new(name)
+ end
+ end
end
end
diff --git a/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb b/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb
index e73c139e96..c7c777014e 100644
--- a/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb
+++ b/railties/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb
@@ -1,7 +1,8 @@
module Rails
module Generators
class ScaffoldControllerGenerator < NamedBase
- include ControllerNamedBase
+ # Add controller methods and ActionORM settings.
+ include ScaffoldBase
check_class_collision :suffix => "Controller"
@@ -21,22 +22,6 @@ module Rails
invoke_if :helper do |base, invoked|
base.invoke invoked, [ base.controller_name ]
end
-
- protected
-
- def orm_class
- @orm_class ||= begin
- action_orm = "#{options[:orm].to_s.classify}::Generators::ActionORM"
- action_orm.constantize
- rescue NameError => e
- raise Error, "Could not load #{action_orm}, skipping controller. Error: #{e.message}."
- end
- end
-
- def orm_instance
- @orm_instance ||= @orm_class.new(file_name)
- end
-
end
end
end
diff --git a/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb b/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb
index 0f6255383e..78fcea1e9c 100644
--- a/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb
+++ b/railties/lib/generators/test_unit/scaffold/scaffold_generator.rb
@@ -3,7 +3,7 @@ require 'generators/test_unit'
module TestUnit
module Generators
class ScaffoldGenerator < Base
- include Rails::Generators::ControllerNamedBase
+ include Rails::Generators::ScaffoldBase
class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller"
check_class_collision :suffix => "ControllerTest"