From 9068bc05b8c5a1f2a0ad6959cb897d5831046d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 28 Jun 2009 18:28:30 +0200 Subject: Added ResourceGenerator. --- .../rails/resource/resource_generator.rb | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 railties/lib/generators/rails/resource/resource_generator.rb (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb new file mode 100644 index 0000000000..5fdf8c5b1b --- /dev/null +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -0,0 +1,35 @@ +require 'generators/rails/model/model_generator' + +module Rails + module Generators + class ResourceGenerator < ModelGenerator + hook_for :resource_controller + + class_option :actions, :type => :array, :default => [], :banner => "ACTION ACTION", + :desc => "Actions for the resource controller", :aliases => "-a" + + def invoke_for_resource_controller + return unless options[:resource_controller] + + klass = Rails::Generators.find_by_namespace(options[:resource_controller], :rails, :controller) + + if klass + args = [] + args << class_name.pluralize + args.concat(options[:actions]) + + say_status :invoke, options[:resource_controller], :blue + klass.new(args, options.dup, _overrides_config).invoke(:all) + else + say "Could not find and invoke '#{options[:resource_controller]}'." + end + end + + # TODO Add singleton support + def add_resource_routes + route "map.resources :#{file_name.pluralize}" + end + + end + end +end -- cgit v1.2.3 From 9413dba432b11d86b80449ca7b959b32ecb0844c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 28 Jun 2009 19:46:34 +0200 Subject: Added tessts for resources generator. --- railties/lib/generators/rails/resource/resource_generator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index 5fdf8c5b1b..938fd6298c 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -16,7 +16,7 @@ module Rails if klass args = [] args << class_name.pluralize - args.concat(options[:actions]) + args << options[:actions] say_status :invoke, options[:resource_controller], :blue klass.new(args, options.dup, _overrides_config).invoke(:all) @@ -26,7 +26,7 @@ module Rails end # TODO Add singleton support - def add_resource_routes + def add_resource_route route "map.resources :#{file_name.pluralize}" end -- cgit v1.2.3 From ff4c6004484a3201f28f7512531c4e8f5f58b617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 28 Jun 2009 19:57:00 +0200 Subject: Added singleton support to resource controller. --- .../generators/rails/resource/resource_generator.rb | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') 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 -- cgit v1.2.3 From 95ef9bd67fa5ae21ed38ae118255ee7408dedec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 29 Jun 2009 19:56:22 +0200 Subject: Simplifying resource generator. --- .../rails/resource/resource_generator.rb | 23 ++++------------------ 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index f61e55a01e..8d787aaa75 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -3,7 +3,9 @@ require 'generators/rails/model/model_generator' module Rails module Generators class ResourceGenerator < ModelGenerator - hook_for :resource_controller + hook_for :resource_controller do |base, controller| + base.invoke controller, [ base.name.pluralize, base.options[:actions] ] + end class_option :actions, :type => :array, :default => [], :banner => "ACTION ACTION", :desc => "Actions for the resource controller", :aliases => "-a" @@ -11,25 +13,8 @@ module Rails 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] - - klass = Rails::Generators.find_by_namespace(options[:resource_controller], :rails, :controller) - - if klass - args = [] - args << pluralize?(class_name) - args << options[:actions] - - say_status :invoke, options[:resource_controller], :blue - klass.new(args, options.dup, _overrides_config).invoke(:all) - else - say "Could not find and invoke '#{options[:resource_controller]}'." - end - end - 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 protected -- cgit v1.2.3 From dec1ee7422417c38cdcbea428d922c67eb3e708f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 30 Jun 2009 08:49:25 +0200 Subject: Started with scaffold controller and added remove_hook_for. --- railties/lib/generators/rails/resource/resource_generator.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index 8d787aaa75..9c57eda7de 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -13,6 +13,17 @@ module Rails class_option :singleton, :type => :boolean, :default => false, :aliases => "-i", :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 route "map.resource#{:s unless options[:singleton]} :#{pluralize?(file_name)}" end -- cgit v1.2.3 From d5d0b8ea8e632b25bb51fc5848f915008fd27665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 30 Jun 2009 11:13:33 +0200 Subject: Removing unecessary class methods. --- .../lib/generators/rails/resource/resource_generator.rb | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index 9c57eda7de..37aca18758 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -2,19 +2,16 @@ require 'generators/rails/model/model_generator' module Rails module Generators - class ResourceGenerator < ModelGenerator + class ResourceGenerator < ModelGenerator #metagenerator hook_for :resource_controller do |base, controller| base.invoke controller, [ base.name.pluralize, base.options[:actions] ] end - class_option :actions, :type => :array, :default => [], :banner => "ACTION ACTION", - :desc => "Actions for the resource controller", :aliases => "-a" + class_option :actions, :type => :array, :banner => "ACTION ACTION", + :desc => "Actions for the resource controller" - class_option :singleton, :type => :boolean, :default => false, :aliases => "-i", - :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" + class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller" + class_option :force_plural, :type => :boolean, :desc => "Forces the use of a plural ModelName" def initialize(args=[], options={}, config={}) super -- cgit v1.2.3 From b77a7dcf4d1b072775e4f276ca59e18eaccc84ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 30 Jun 2009 13:25:27 +0200 Subject: Added controller named base. --- railties/lib/generators/rails/resource/resource_generator.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index 37aca18758..c8748aecf4 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -13,11 +13,11 @@ module Rails class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller" class_option :force_plural, :type => :boolean, :desc => "Forces the use of a plural ModelName" - def initialize(args=[], options={}, config={}) + def initialize(*args) super - if args[0] == args[0].pluralize && !self.options[:force_plural] + if name == name.pluralize && !options[:force_plural] say "Plural version of the model detected, using singularized version. Override with --force-plural." - args[0] = args[0].singularize + name.replace name.singularize end end -- cgit v1.2.3 From 9541977e049d236564f34cf58660b61e154ccb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 1 Jul 2009 13:30:07 +0200 Subject: Make scaffold controller generate agnostic code and mark some hooks as required. --- railties/lib/generators/rails/resource/resource_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index c8748aecf4..8ff6d820f2 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -3,7 +3,7 @@ require 'generators/rails/model/model_generator' module Rails module Generators class ResourceGenerator < ModelGenerator #metagenerator - hook_for :resource_controller do |base, controller| + hook_for :resource_controller, :required => true do |base, controller| base.invoke controller, [ base.name.pluralize, base.options[:actions] ] end -- cgit v1.2.3 From d1c404ee90ea7470d662517aa7a2d312a61c8c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 3 Jul 2009 12:10:09 +0200 Subject: Added lookup to generators. --- railties/lib/generators/rails/resource/resource_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/resource/resource_generator.rb') diff --git a/railties/lib/generators/rails/resource/resource_generator.rb b/railties/lib/generators/rails/resource/resource_generator.rb index 8ff6d820f2..70babc0550 100644 --- a/railties/lib/generators/rails/resource/resource_generator.rb +++ b/railties/lib/generators/rails/resource/resource_generator.rb @@ -7,7 +7,7 @@ module Rails base.invoke controller, [ base.name.pluralize, base.options[:actions] ] end - class_option :actions, :type => :array, :banner => "ACTION ACTION", + class_option :actions, :type => :array, :banner => "ACTION ACTION", :default => [], :desc => "Actions for the resource controller" class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller" -- cgit v1.2.3