From c16a4379caaa9e086aeeb58a9194e511c40921d9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 9 Oct 2006 00:08:13 +0000 Subject: Added script/generate resource which works just like scaffold_resource, but creates empty placeholders instead of predefined [DHH] Added generated attribute options to script/generate model, like the one found in scaffold_resource and resource [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5236 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../generators/components/resource/templates/USAGE | 18 ++++++++++++++++++ .../components/resource/templates/controller.rb | 2 ++ .../components/resource/templates/fixtures.yml | 11 +++++++++++ .../components/resource/templates/functional_test.rb | 20 ++++++++++++++++++++ .../components/resource/templates/helper.rb | 2 ++ .../components/resource/templates/migration.rb | 13 +++++++++++++ .../components/resource/templates/model.rb | 2 ++ .../components/resource/templates/unit_test.rb | 10 ++++++++++ 8 files changed, 78 insertions(+) create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/USAGE create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/controller.rb create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/helper.rb create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/migration.rb create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/model.rb create mode 100644 railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb (limited to 'railties/lib/rails_generator/generators/components/resource/templates') diff --git a/railties/lib/rails_generator/generators/components/resource/templates/USAGE b/railties/lib/rails_generator/generators/components/resource/templates/USAGE new file mode 100644 index 0000000000..39ad0db472 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/USAGE @@ -0,0 +1,18 @@ +Description: + The resource generator creates an empty model and controller for use in a REST-friendly, resource-oriented + application. Say you want to a resource called post. Normally, you could just call "script/generate model post" and + "script/generate controller posts". This generator basically just collapses these two generators into one step. + + The generator takes the name of the model as its first argument. This model name is then pluralized to get the + controller name. So "resource post" will generate a Post model and a PostsController and will be intended + for URLs like /posts and /posts/45. + + As additional parameters, the generator will take attribute pairs described by name and type. These attributes will + be used to prepopulate the migration to create the table for the model and give you a set of predefined fixture. + You don't have to think up all attributes up front, but it's a good idea of adding just the baseline of what's + needed to start really working with the resource. + +Examples: + ./script/generate resource post + ./script/generate resource post title:string created_on:date body:text published:boolean + ./script/generate resource purchase order_id:integer created_at:datetime amount:decimal \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/resource/templates/controller.rb b/railties/lib/rails_generator/generators/components/resource/templates/controller.rb new file mode 100644 index 0000000000..153ee1edac --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/controller.rb @@ -0,0 +1,2 @@ +class <%= controller_class_name %>Controller < ApplicationController +end \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml b/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml new file mode 100644 index 0000000000..9f5ae29a81 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/fixtures.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +one: + id: 1 +<% for attribute in attributes -%> + <%= attribute.name %>: <%= attribute.default %> +<% end -%> +two: + id: 2 +<% for attribute in attributes -%> + <%= attribute.name %>: <%= attribute.default %> +<% end -%> \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb b/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb new file mode 100644 index 0000000000..32bc2cab2b --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb @@ -0,0 +1,20 @@ +require File.dirname(__FILE__) + '<%= '/..' * controller_class_nesting_depth %>/../test_helper' +require '<%= controller_file_path %>_controller' + +# Re-raise errors caught by the controller. +class <%= controller_class_name %>Controller; def rescue_action(e) raise e end; end + +class <%= controller_class_name %>ControllerTest < Test::Unit::TestCase + fixtures :<%= table_name %> + + def setup + @controller = <%= controller_class_name %>Controller.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + # Replace this with your real tests. + def test_truth + assert true + end +end diff --git a/railties/lib/rails_generator/generators/components/resource/templates/helper.rb b/railties/lib/rails_generator/generators/components/resource/templates/helper.rb new file mode 100644 index 0000000000..9bd821b1b2 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/helper.rb @@ -0,0 +1,2 @@ +module <%= controller_class_name %>Helper +end diff --git a/railties/lib/rails_generator/generators/components/resource/templates/migration.rb b/railties/lib/rails_generator/generators/components/resource/templates/migration.rb new file mode 100644 index 0000000000..2a305a6a9d --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/migration.rb @@ -0,0 +1,13 @@ +class <%= migration_name %> < ActiveRecord::Migration + def self.up + create_table :<%= table_name %> do |t| +<% for attribute in attributes -%> + t.column :<%= attribute.name %>, :<%= attribute.type %> +<% end -%> + end + end + + def self.down + drop_table :<%= table_name %> + end +end diff --git a/railties/lib/rails_generator/generators/components/resource/templates/model.rb b/railties/lib/rails_generator/generators/components/resource/templates/model.rb new file mode 100644 index 0000000000..8d4c89e912 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/model.rb @@ -0,0 +1,2 @@ +class <%= class_name %> < ActiveRecord::Base +end diff --git a/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb b/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb new file mode 100644 index 0000000000..b464de47a2 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/resource/templates/unit_test.rb @@ -0,0 +1,10 @@ +require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper' + +class <%= class_name %>Test < Test::Unit::TestCase + fixtures :<%= table_name %> + + # Replace this with your real tests. + def test_truth + assert true + end +end -- cgit v1.2.3