From 8f2221da85ca1d7a1fa08d6f81e7a6fbb711051d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 17 Sep 2006 22:20:18 +0000 Subject: Work-in-progress scaffolder for resources [DHH/Rick Olson] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5132 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../scaffold_resource/templates/controller.rb | 82 ++++++++++++++++++++++ .../scaffold_resource/templates/fixtures.yml | 5 ++ .../scaffold_resource/templates/functional_test.rb | 57 +++++++++++++++ .../scaffold_resource/templates/helper.rb | 2 + .../scaffold_resource/templates/migration.rb | 13 ++++ .../scaffold_resource/templates/model.rb | 2 + .../scaffold_resource/templates/unit_test.rb | 10 +++ .../scaffold_resource/templates/view_edit.rhtml | 6 ++ .../scaffold_resource/templates/view_index.rhtml | 24 +++++++ .../scaffold_resource/templates/view_new.rhtml | 5 ++ .../scaffold_resource/templates/view_show.rhtml | 8 +++ 11 files changed, 214 insertions(+) create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml (limited to 'railties/lib/rails_generator/generators/components/scaffold_resource/templates') diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb new file mode 100644 index 0000000000..110a4688fa --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb @@ -0,0 +1,82 @@ +class <%= controller_class_name %>Controller < ApplicationController + # GET /<%= table_name %> + # GET /<%= table_name %>.xml + def index + @<%= table_name %> = <%= class_name %>.find(:all) + + respond_to do |format| + format.html # index.rhtml + format.xml { render :xml => @<%= table_name %>.to_xml } + end + end + + # GET /<%= table_name %>/1 + # GET /<%= table_name %>/1.xml + def show + @<%= file_name %> = <%= class_name %>.find(params[:id]) + + respond_to do |format| + format.html # show.rhtml + format.xml { render :xml => @<%= file_name %>.to_xml } + end + end + + # GET /<%= table_name %>/new + def new + @<%= file_name %> = <%= class_name %>.new + end + + # GET /<%= table_name %>/1;edit + def edit + @<%= file_name %> = <%= class_name %>.find(params[:id]) + end + + # POST /<%= table_name %> + # POST /<%= table_name %>.xml + def create + @<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>]) + + respond_to do |format| + if @<%= file_name %>.save + flash[:notice] = '<%= class_name %> was successfully created.' + + format.html { redirect_to <%= file_name %>_url(@<%= file_name %>) } + format.xml do + headers["Location"] = <%= file_name %>_url(@<%= file_name %>) + render :nothing => true, :status => "201 Created" + end + else + format.html { render :action => "new" } + format.xml { render :xml => @<%= file_name %>.errors.to_xml } + end + end + end + + # PUT /<%= table_name %>/1 + # PUT /<%= table_name %>/1.xml + def update + @<%= file_name %> = <%= class_name %>.find(params[:id]) + + respond_to do |format| + if @<%= file_name %>.update_attributes(params[:<%= file_name %>]) + format.html { redirect_to <%= file_name %>_url(@<%= file_name %>) } + format.xml { render :nothing => true } + else + format.html { render :action => "edit" } + format.xml { render :xml => @<%= file_name %>.errors.to_xml } + end + end + end + + # DELETE /<%= table_name %>/1 + # DELETE /<%= table_name %>/1.xml + def destroy + @<%= file_name %> = <%= class_name %>.find(params[:id]) + @<%= file_name %>.destroy + + respond_to do |format| + format.html { redirect_to <%= table_name %>_url } + format.xml { render :nothing => true } + end + end +end \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml new file mode 100644 index 0000000000..8794d28ae4 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml @@ -0,0 +1,5 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +first: + id: 1 +another: + id: 2 diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb new file mode 100644 index 0000000000..0c68fd3122 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb @@ -0,0 +1,57 @@ +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 + + def test_should_get_index + get :index + assert_response :success + assert assigns(:<%= table_name %>) + end + + def test_should_get_new + get :new + assert_response :success + end + + def test_should_create_<%= file_name %> + old_count = <%= class_name %>.count + post :create, :<%= file_name %> => { } + assert_equal old_count+1, <%= class_name %>.count + + assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>)) + end + + def test_should_show_<%= file_name %> + get :show, :id => 1 + assert_response :success + end + + def test_should_get_edit + get :edit, :id => 1 + assert_response :success + end + + def test_should_update_<%= file_name %> + put :update, :id => 1, :<%= file_name %> => { } + assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>)) + end + + def test_should_destroy_<%= file_name %> + old_count = <%= class_name %>.count + delete :destroy, :id => 1 + assert_equal old_count-1, <%= class_name %>.count + + assert_redirected_to <%= table_name %>_path + end +end diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb new file mode 100644 index 0000000000..9bd821b1b2 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb @@ -0,0 +1,2 @@ +module <%= controller_class_name %>Helper +end diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb new file mode 100644 index 0000000000..e0e4886598 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb @@ -0,0 +1,13 @@ +class <%= migration_name %> < ActiveRecord::Migration + def self.up + create_table :<%= table_name %> do |t| + t.column :name, :string + t.column :description, :text + t.column :created_at, :datetime + end + end + + def self.down + drop_table :<%= table_name %> + end +end diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb new file mode 100644 index 0000000000..8d4c89e912 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb @@ -0,0 +1,2 @@ +class <%= class_name %> < ActiveRecord::Base +end diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb new file mode 100644 index 0000000000..b464de47a2 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_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 diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml new file mode 100644 index 0000000000..7781ad8ead --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml @@ -0,0 +1,6 @@ +

Editing <%= singular_name %>

+ +<%%= form(@<%= singular_name %>) %> + +<%%= link_to 'Show', <%= singular_name %>_path(@<%= singular_name %>) %> | +<%%= link_to 'Back', <%= plural_name %>_path %> \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml new file mode 100644 index 0000000000..c2bbdce9e8 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml @@ -0,0 +1,24 @@ +

Listing <%= plural_name %>

+ + + + <%% for column in <%= model_name %>.content_columns %> + + <%% end %> + + +<%% for <%= singular_name %> in @<%= plural_name %> %> + + <%% for column in <%= model_name %>.content_columns %> + + <%% end %> + + + + +<%% end %> +
<%%= column.human_name %>
<%%=h <%= singular_name %>.send(column.name) %><%%= link_to 'Show', <%= singular_name %>_path(<%= singular_name %>) %><%%= link_to 'Edit', edit_<%= singular_name %>_path(<%= singular_name %>) %><%%= link_to 'Destroy', <%= singular_name %>_path(<%= singular_name %>), :confirm => 'Are you sure?', :method => :delete %>
+ +
+ +<%%= link_to 'New <%= singular_name %>', new_<%= singular_name %>_path %> \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml new file mode 100644 index 0000000000..35232a5486 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml @@ -0,0 +1,5 @@ +

New <%= singular_name %>

+ +<%%= form(@<%= singular_name %>) %> + +<%%= link_to 'Back', <%= plural_name %>_path %> \ No newline at end of file diff --git a/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml new file mode 100644 index 0000000000..e0fea3a9b5 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml @@ -0,0 +1,8 @@ +<%% for column in <%= model_name %>.content_columns %> +

+ <%%= column.human_name %>: <%%=h @<%= singular_name %>.send(column.name) %> +

+<%% end %> + +<%%= link_to 'Edit', edit_<%= singular_name %>_path(@<%= singular_name %>) %> | +<%%= link_to 'Back', <%= plural_name %>_path %> \ No newline at end of file -- cgit v1.2.3