mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Started with scaffold controller and added remove_hook_for.
This commit is contained in:
parent
1c265da1db
commit
dec1ee7422
5 changed files with 78 additions and 0 deletions
|
@ -188,6 +188,21 @@ module Rails
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Remove a previously added hook.
|
||||||
|
#
|
||||||
|
# ==== Examples
|
||||||
|
#
|
||||||
|
# remove_hook_for :orm
|
||||||
|
#
|
||||||
|
def self.remove_hook_for(*names)
|
||||||
|
names.each do |name|
|
||||||
|
remove_class_option name
|
||||||
|
remove_task name
|
||||||
|
invocations.delete_if { |i| i[0] == name }
|
||||||
|
invocation_blocks.delete(name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
# This is the common method that both hook_for and invoke_if use to
|
# This is the common method that both hook_for and invoke_if use to
|
||||||
|
|
|
@ -13,6 +13,17 @@ module Rails
|
||||||
class_option :singleton, :type => :boolean, :default => false, :aliases => "-i",
|
class_option :singleton, :type => :boolean, :default => false, :aliases => "-i",
|
||||||
:desc => "Supply to create a singleton controller"
|
:desc => "Supply to create a singleton controller"
|
||||||
|
|
||||||
|
class_option :force_plural, :type => :boolean, :default => false, :aliases => "-u",
|
||||||
|
:desc => "Forces the use of a plural ModelName"
|
||||||
|
|
||||||
|
def initialize(args=[], options={}, config={})
|
||||||
|
super
|
||||||
|
if args[0] == args[0].pluralize && !self.options[:force_plural]
|
||||||
|
say "Plural version of the model detected, using singularized version. Override with --force-plural."
|
||||||
|
args[0] = args[0].singularize
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def add_resource_route
|
def add_resource_route
|
||||||
route "map.resource#{:s unless options[:singleton]} :#{pluralize?(file_name)}"
|
route "map.resource#{:s unless options[:singleton]} :#{pluralize?(file_name)}"
|
||||||
end
|
end
|
||||||
|
|
29
railties/lib/generators/rails/scaffold/USAGE
Normal file
29
railties/lib/generators/rails/scaffold/USAGE
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
Description:
|
||||||
|
Scaffolds an entire resource, from model and migration to controller and
|
||||||
|
views, along with a full test suite. The resource is ready to use as a
|
||||||
|
starting point for your RESTful, resource-oriented application.
|
||||||
|
|
||||||
|
Pass the name of the model (in singular form), either CamelCased or
|
||||||
|
under_scored, as the first argument, and an optional list of attribute
|
||||||
|
pairs.
|
||||||
|
|
||||||
|
Attribute pairs are field:type arguments specifying the
|
||||||
|
model's attributes. Timestamps are added by default, so you don't have to
|
||||||
|
specify them by hand as 'created_at:datetime updated_at:datetime'.
|
||||||
|
|
||||||
|
You don't have to think up every attribute up front, but it helps to
|
||||||
|
sketch out a few so you can start working with the resource immediately.
|
||||||
|
|
||||||
|
For example, 'scaffold post title:string body:text published:boolean'
|
||||||
|
gives you a model with those three attributes, a controller that handles
|
||||||
|
the create/show/update/destroy, forms to create and edit your posts, and
|
||||||
|
an index that lists them all, as well as a map.resources :posts
|
||||||
|
declaration in config/routes.rb.
|
||||||
|
|
||||||
|
If you want to remove all the generated files, run
|
||||||
|
'script/destroy scaffold ModelName'.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
`./script/generate scaffold post`
|
||||||
|
`./script/generate scaffold post title:string body:text published:boolean`
|
||||||
|
`./script/generate scaffold purchase order_id:integer amount:decimal`
|
|
@ -0,0 +1,9 @@
|
||||||
|
require 'generators/rails/resource/resource_generator'
|
||||||
|
|
||||||
|
module Rails
|
||||||
|
module Generators
|
||||||
|
class ScaffoldGenerator < ResourceGenerator
|
||||||
|
remove_hook_for :actions, :resource_controller
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -86,6 +86,20 @@ class ResourceGeneratorTest < GeneratorsTestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_plural_names_are_singularized
|
||||||
|
content = run_generator ["accounts"]
|
||||||
|
assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/
|
||||||
|
assert_file "test/unit/account_test.rb", /class AccountTest/
|
||||||
|
assert_match /Plural version of the model detected, using singularized version. Override with --force-plural./, content
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_plural_names_can_be_forced
|
||||||
|
content = run_generator ["accounts", "--force-plural"]
|
||||||
|
assert_file "app/models/accounts.rb", /class Accounts < ActiveRecord::Base/
|
||||||
|
assert_file "test/unit/accounts_test.rb", /class AccountsTest/
|
||||||
|
assert_no_match /Plural version of the model detected/, content
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def run_generator(args=["account"])
|
def run_generator(args=["account"])
|
||||||
|
|
Loading…
Reference in a new issue