aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-06-28 19:57:00 +0200
committerJosé Valim <jose.valim@gmail.com>2009-06-28 19:57:00 +0200
commitff4c6004484a3201f28f7512531c4e8f5f58b617 (patch)
tree3af1cdd1a084f9533e5106763d4c1a40e6c7ab07 /railties
parent9413dba432b11d86b80449ca7b959b32ecb0844c (diff)
downloadrails-ff4c6004484a3201f28f7512531c4e8f5f58b617.tar.gz
rails-ff4c6004484a3201f28f7512531c4e8f5f58b617.tar.bz2
rails-ff4c6004484a3201f28f7512531c4e8f5f58b617.zip
Added singleton support to resource controller.
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/generators/rails/resource/resource_generator.rb18
-rw-r--r--railties/test/generators/resource_generator_test.rb14
2 files changed, 29 insertions, 3 deletions
diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb
index 938fd6298c..f61e55a01e 100644
--- a/railties/lib/generators/rails/resource/resource_generator.rb
+++ b/railties/lib/generators/rails/resource/resource_generator.rb
@@ -8,6 +8,9 @@ module Rails
class_option :actions, :type => :array, :default => [], :banner => "ACTION ACTION",
:desc => "Actions for the resource controller", :aliases => "-a"
+ class_option :singleton, :type => :boolean, :default => false, :aliases => "-i",
+ :desc => "Supply to create a singleton controller"
+
def invoke_for_resource_controller
return unless options[:resource_controller]
@@ -15,7 +18,7 @@ module Rails
if klass
args = []
- args << class_name.pluralize
+ args << pluralize?(class_name)
args << options[:actions]
say_status :invoke, options[:resource_controller], :blue
@@ -25,11 +28,20 @@ module Rails
end
end
- # TODO Add singleton support
def add_resource_route
- route "map.resources :#{file_name.pluralize}"
+ route "map.resource#{"s" unless options[:singleton]} :#{pluralize?(file_name)}"
end
+ protected
+
+ def pluralize?(name)
+ if options[:singleton]
+ name
+ else
+ name.pluralize
+ end
+ end
+
end
end
end
diff --git a/railties/test/generators/resource_generator_test.rb b/railties/test/generators/resource_generator_test.rb
index aed45f190d..3d856f519b 100644
--- a/railties/test/generators/resource_generator_test.rb
+++ b/railties/test/generators/resource_generator_test.rb
@@ -78,6 +78,20 @@ class ResourceGeneratorTest < GeneratorsTestCase
end
end
+ def test_singleton_resource
+ run_generator ["account", "--singleton"]
+
+ assert_file "app/controllers/account_controller.rb", /class AccountController < ApplicationController/
+ assert_file "test/functional/account_controller_test.rb", /class AccountControllerTest < ActionController::TestCase/
+
+ assert_file "app/helpers/account_helper.rb", /module AccountHelper/
+ assert_file "test/unit/helpers/account_helper_test.rb", /class AccountHelperTest < ActionView::TestCase/
+
+ assert_file "config/routes.rb" do |route|
+ assert_match /map\.resource :account$/, route
+ end
+ end
+
protected
def run_generator(args=["account"])