Rename ControllerNamedBase to ScaffoldBase and move ActionORM helpers.
This commit is contained in:
parent
1a4d8aca8a
commit
7f7afdf0f1
@ -3,7 +3,7 @@
|
||||
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"
|
||||
|
||||
|
@ -23,7 +23,7 @@ def assign_names!(given_name) #:nodoc:
|
||||
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 @@ def inflect_names(name) #:nodoc:
|
||||
[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 @@ def inflect_names(name) #:nodoc:
|
||||
#
|
||||
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 @@ def self.check_class_collision(options={})
|
||||
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 @@ def self.included(base) #:nodoc:
|
||||
|
||||
# Set controller variables on initialization.
|
||||
#
|
||||
def initialize(*args)
|
||||
def initialize(*args) #:nodoc:
|
||||
super
|
||||
@controller_name = name.pluralize
|
||||
|
||||
@ -115,7 +120,31 @@ def initialize(*args)
|
||||
"#{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
|
||||
|
@ -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 @@ def create_controller_files
|
||||
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
|
||||
|
@ -3,7 +3,7 @@
|
||||
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"
|
||||
|
Loading…
Reference in New Issue
Block a user