From daee6fd92ac16878f6806c3382a9e74592aa9656 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 7 Feb 2005 13:14:05 +0000 Subject: Added new generator framework that informs about its doings on generation and enables updating and destruction of generated artifacts. See the new script/destroy and script/update for more details #487 [bitsweat] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@518 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../components/scaffold/templates/controller.rb | 55 +++++++++++++++ .../components/scaffold/templates/form.rhtml | 5 ++ .../scaffold/templates/functional_test.rb | 80 ++++++++++++++++++++++ .../components/scaffold/templates/layout.rhtml | 11 +++ .../components/scaffold/templates/style.css | 53 ++++++++++++++ .../components/scaffold/templates/view_edit.rhtml | 7 ++ .../components/scaffold/templates/view_list.rhtml | 24 +++++++ .../components/scaffold/templates/view_new.rhtml | 6 ++ .../components/scaffold/templates/view_show.rhtml | 8 +++ 9 files changed, 249 insertions(+) create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/style.css create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml create mode 100644 railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml (limited to 'railties/lib/rails_generator/generators/components/scaffold/templates') diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb b/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb new file mode 100644 index 0000000000..c409284cb1 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb @@ -0,0 +1,55 @@ +class <%= controller_class_name %>Controller < ApplicationController +<% unless suffix -%> + + def index + list + render_action 'list' + end +<% end -%> + +<% for action in unscaffolded_actions -%> + def <%= action %><%= suffix %> + end + +<% end -%> + def list<%= suffix %> + @<%= plural_name %> = <%= class_name %>.find_all + end + + def show<%= suffix %> + @<%= singular_name %> = <%= class_name %>.find(@params['id']) + end + + def new<%= suffix %> + @<%= singular_name %> = <%= class_name %>.new + end + + def create<%= suffix %> + @<%= singular_name %> = <%= class_name %>.new(@params['<%= singular_name %>']) + if @<%= singular_name %>.save + flash['notice'] = '<%= class_name %> was successfully created.' + redirect_to :action => 'list<%= suffix %>' + else + render_action 'new<%= suffix %>' + end + end + + def edit<%= suffix %> + @<%= singular_name %> = <%= class_name %>.find(@params['id']) + end + + def update + @<%= singular_name %> = <%= class_name %>.find(@params['<%= singular_name %>']['id']) + if @<%= singular_name %>.update_attributes(@params['<%= singular_name %>']) + flash['notice'] = '<%= class_name %> was successfully updated.' + redirect_to :action => 'show<%= suffix %>', :id => @<%= singular_name %>.id + else + render_action 'edit<%= suffix %>' + end + end + + def destroy<%= suffix %> + <%= class_name %>.find(@params['id']).destroy + redirect_to :action => 'list<%= suffix %>' + end +end diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml b/railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml new file mode 100644 index 0000000000..d314c5f6b5 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/form.rhtml @@ -0,0 +1,5 @@ +<%%= start_form_tag :action => '<%= @form_action %><%= @suffix %>' %> +<%%= hidden_field '<%= @singular_name %>', 'id' %> +<%= all_input_tags(@model_instance, @singular_name, {}) %> + +<%%= end_form_tag %> diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb b/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb new file mode 100644 index 0000000000..ea9c8e4e94 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb @@ -0,0 +1,80 @@ +require File.dirname(__FILE__) + '/../test_helper' +require '<%= controller_file_name %>_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 + $base_id = 1000001 + @controller = <%= controller_class_name %>Controller.new + @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new + end + +<% for action in unscaffolded_actions -%> + def test_<%= action %> + process :<%= action %> + assert_rendered_file '<%= action %>' + end + +<% end -%> +<% unless suffix -%> + def test_index + process :index + assert_rendered_file 'list' + end + +<% end -%> + def test_list<%= suffix %> + process :list<%= suffix %> + assert_rendered_file 'list<%= suffix %>' + assert_template_has '<%= plural_name %>' + end + + def test_show<%= suffix %> + process :show<%= suffix %>, 'id' => $base_id + assert_rendered_file 'show' + assert_template_has '<%= singular_name %>' + assert_valid_record '<%= singular_name %>' + end + + def test_new<%= suffix %> + process :new<%= suffix %> + assert_rendered_file 'new<%= suffix %>' + assert_template_has '<%= singular_name %>' + end + + def test_create + num_<%= plural_name %> = <%= class_name %>.find_all.size + + process :create<%= suffix %>, '<%= singular_name %>' => { } + assert_redirected_to :action => 'list<%= suffix %>' + + assert_equal num_<%= plural_name %> + 1, <%= class_name %>.find_all.size + end + + def test_edit<%= suffix %> + process :edit<%= suffix %>, 'id' => $base_id + assert_rendered_file 'edit<%= suffix %>' + assert_template_has '<%= singular_name %>' + assert_valid_record '<%= singular_name %>' + end + + def test_update<%= suffix %> + process :update<%= suffix %>, '<%= singular_name %>' => { 'id' => $base_id } + assert_redirected_to :action => 'show<%= suffix %>', :id => $base_id + end + + def test_destroy<%= suffix %> + assert_not_nil <%= class_name %>.find($base_id) + + process :destroy, 'id' => $base_id + assert_redirected_to :action => 'list<%= suffix %>' + + assert_raise(ActiveRecord::RecordNotFound) { + <%= singular_name %> = <%= class_name %>.find($base_id) + } + end +end diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml b/railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml new file mode 100644 index 0000000000..c4815bd0a3 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml @@ -0,0 +1,11 @@ + + + <%= controller_class_name %>: <%%= controller.action_name %> + + + + +<%%= @content_for_layout %> + + + diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/style.css b/railties/lib/rails_generator/generators/components/scaffold/templates/style.css new file mode 100644 index 0000000000..95a3c4668c --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/style.css @@ -0,0 +1,53 @@ +body { background-color: #fff; color: #333; } + +body, p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { color: #000; } +a:visited { color: #666; } +a:hover { color: #fff; background-color:#000; } + +.fieldWithErrors { + padding: 2px; + background-color: red; + display: table; +} + +#ErrorExplanation { + width: 400px; + border: 2px solid #red; + padding: 7px; + padding-bottom: 12px; + margin-bottom: 20px; + background-color: #f0f0f0; +} + +#ErrorExplanation h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + background-color: #c00; + color: #fff; +} + +#ErrorExplanation p { + color: #333; + margin-bottom: 0; + padding: 5px; +} + +#ErrorExplanation ul li { + font-size: 12px; + list-style: square; +} diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml b/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml new file mode 100644 index 0000000000..4ad70f537a --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml @@ -0,0 +1,7 @@ +

Editing <%= singular_name %>

+ +<%%= error_messages_for '<%= singular_name %>' %> +<%= template_for_inclusion %> + +<%%= link_to 'Show', :action => 'show<%= suffix %>', :id => @<%= singular_name %>.id %> | +<%%= link_to 'Back', :action => 'list<%= suffix %>' %> diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml b/railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml new file mode 100644 index 0000000000..068fd67472 --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml @@ -0,0 +1,24 @@ +

Listing <%= plural_name %>

+ + + +<%% for column in <%= class_name %>.content_columns %> + +<%% end %> + + +<%% for <%= singular_name %> in @<%= plural_name %> %> + + <%% for column in <%= class_name %>.content_columns %> + + <%% end %> + + + + +<%% end %> +
<%%= column.human_name %>
<%%=h <%= singular_name %>[column.name] %><%%= link_to 'Show', :action => 'show<%= suffix %>', :id => <%= singular_name %>.id %><%%= link_to 'Edit', :action => 'edit<%= suffix %>', :id => <%= singular_name %>.id %><%%= link_to 'Destroy', :action => 'destroy<%= suffix %>', :id => <%= singular_name %>.id %>
+ +
+ +<%%= link_to 'New <%= singular_name %>', :action => 'new<%= suffix %>' %> diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml b/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml new file mode 100644 index 0000000000..fcf5a3c54b --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml @@ -0,0 +1,6 @@ +

New <%= @singular_name %>

+ +<%%= error_messages_for '<%= singular_name %>' %> +<%= template_for_inclusion %> + +<%%= link_to 'Back', :action => 'list<%= suffix %>' %> diff --git a/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml b/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml new file mode 100644 index 0000000000..ba8f3616dd --- /dev/null +++ b/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml @@ -0,0 +1,8 @@ +<%% for column in <%= class_name %>.content_columns %> +

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

+<%% end %> + +<%%= link_to 'Edit', :action => 'edit<%= suffix %>', :id => @<%= singular_name %>.id %> | +<%%= link_to 'Back', :action => 'list<%= suffix %>' %> -- cgit v1.2.3