diff options
Diffstat (limited to 'railties/lib/generators/rails/resource/resource_generator.rb')
-rw-r--r-- | railties/lib/generators/rails/resource/resource_generator.rb | 35 |
1 files changed, 35 insertions, 0 deletions
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 |