zero_generators 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/README +38 -0
  2. data/generators/default_values.rb +21 -0
  3. data/generators/factory_scaffold/USAGE +15 -0
  4. data/generators/factory_scaffold/factory_scaffold_generator.rb +27 -0
  5. data/generators/factory_scaffold/templates/controller_spec.rb.erb +135 -0
  6. data/generators/factory_scaffold/templates/helper_spec.rb.erb +5 -0
  7. data/generators/factory_scaffold/templates/model_spec.rb.erb +8 -0
  8. data/generators/ferret_scaffold/USAGE +12 -0
  9. data/generators/ferret_scaffold/ferret_scaffold_generator.rb +92 -0
  10. data/generators/ferret_scaffold/templates/controller.rb.erb +128 -0
  11. data/generators/ferret_scaffold/templates/controller_spec.rb.erb +155 -0
  12. data/generators/ferret_scaffold/templates/helper.rb.erb +2 -0
  13. data/generators/ferret_scaffold/templates/helper_spec.rb.erb +7 -0
  14. data/generators/ferret_scaffold/templates/migration.rb.erb +20 -0
  15. data/generators/ferret_scaffold/templates/model.rb.erb +8 -0
  16. data/generators/ferret_scaffold/templates/model_spec.rb.erb +28 -0
  17. data/generators/ferret_scaffold/templates/views/_dados_busca.html.erb +11 -0
  18. data/generators/ferret_scaffold/templates/views/_dados_model.html.erb +8 -0
  19. data/generators/ferret_scaffold/templates/views/edit.html.erb +13 -0
  20. data/generators/ferret_scaffold/templates/views/index.html.erb +11 -0
  21. data/generators/ferret_scaffold/templates/views/layout.html.erb +18 -0
  22. data/generators/ferret_scaffold/templates/views/new.html.erb +12 -0
  23. data/generators/ferret_scaffold/templates/views/show.html.erb +16 -0
  24. data/generators/layout/USAGE +10 -0
  25. data/generators/layout/layout_generator.rb +22 -0
  26. data/generators/layout/templates/README +7 -0
  27. data/generators/layout/templates/layout.html.erb +26 -0
  28. data/generators/layout/templates/pt_BR.yml +109 -0
  29. data/generators/layout/templates/stylesheet.css +60 -0
  30. data/generators/tdd_controller/USAGE +9 -0
  31. data/generators/tdd_controller/tdd_controller_generator.rb +15 -0
  32. data/generators/tdd_controller/templates/controller_spec.rb.erb +29 -0
  33. data/generators/tdd_model/USAGE +10 -0
  34. data/generators/tdd_model/tdd_model_generator.rb +17 -0
  35. data/generators/tdd_model/templates/model_spec.rb.erb +24 -0
  36. data/generators/tdd_scaffold/USAGE +11 -0
  37. data/generators/tdd_scaffold/tdd_scaffold_generator.rb +32 -0
  38. data/generators/tdd_scaffold/templates/controller_spec.rb.erb +125 -0
  39. data/generators/tdd_scaffold/templates/helper_spec.rb.erb +7 -0
  40. data/generators/tdd_scaffold/templates/model_spec.rb.erb +28 -0
  41. data/generators/tdd_scaffold_stub/USAGE +17 -0
  42. data/generators/tdd_scaffold_stub/tdd_scaffold_stub_generator.rb +40 -0
  43. data/generators/tdd_scaffold_stub/templates/controller_spec.rb.erb +157 -0
  44. data/generators/tdd_scaffold_stub/templates/edit.html.erb_spec.rb.erb +14 -0
  45. data/generators/tdd_scaffold_stub/templates/helper_spec.rb.erb +7 -0
  46. data/generators/tdd_scaffold_stub/templates/index.html.erb_spec.rb.erb +14 -0
  47. data/generators/tdd_scaffold_stub/templates/model_spec.rb.erb +24 -0
  48. data/generators/tdd_scaffold_stub/templates/new.html.erb_spec.rb.erb +12 -0
  49. data/generators/tdd_scaffold_stub/templates/show.html.erb_spec.rb.erb +14 -0
  50. metadata +112 -0
data/README ADDED
@@ -0,0 +1,38 @@
1
+ Zero Generators
2
+ =======
3
+
4
+ Coletânea de geradores de código para Rails que eu acabo tendo que incluir em todos os projetos
5
+ que desenvolvo, e acabei por decidindo criar um plugin.
6
+
7
+ Geradores
8
+ =======
9
+
10
+ Basicamente, os geradores são:
11
+
12
+ * tdd_model, tdd_controller - Geradores que geram "stubs" de testes, em formato RSpec.
13
+ * tdd_scaffold - Gerador para um teste, em RSpec, de um scaffold padrão do Rails. Evita stubs sempre que possível.
14
+ * tdd_scaffold_stub - Gerador para um teste, em RSpec, de um scaffold padrão do Rails, usando stubs
15
+ sempre que possível (tenta imitar o formato padrão do spec_scaffold, porém em português).
16
+ * factory_scaffold - Gerador para um teste, em RSpec, de um scaffold padrão porém usando fixtures.
17
+ Utiliza stubs, porém a idéia é ser fácil de retirar estes stubs se for necessário.
18
+ * layout - Cria um layout, inclusive com o arquivo pt_BR.yml.
19
+ * ferret_scaffold - Cria um Scaffold usando Ferret.
20
+
21
+ NOTA
22
+ ======
23
+
24
+ Estes geradores são altamente "opinados" - todos os geradores que geram também testes usam a sintaxe
25
+ do RSpec, e todos os testes evitam stubs. Na minha concepção, não existe "unit-test" em Controller
26
+ (e, na verdade, o BDD meio que surgiu para evitar a idéia de "unit-test") portanto isolar o Controller
27
+ da Model, em testes, não parece fazer sentido. Isso faz com que uma alteração na Model muitas vezes
28
+ quebre testes no Controller, mas sejamos sinceros, se isso acontecer é porque provavelmente o seu
29
+ Controller está com bugs mesmo, e se o teste não serve para capturar isso, qual o uso dele?
30
+
31
+ Este é um projeto em andamento, e provavelmente com o tempo o número de geradores aumentará bastante.
32
+
33
+ Exemplos
34
+ =======
35
+
36
+
37
+
38
+ Copyright (c) 2009 Maurício Szabo, desenvolvido sobre a Artistic License - versão 2.0
@@ -0,0 +1,21 @@
1
+ #coding: utf-8
2
+ #Copiado na íntegra do RSpec-Rails
3
+ module Rails
4
+ module Generator
5
+ class GeneratedAttribute
6
+ def default_value
7
+ @default_value ||= case type
8
+ when :int, :integer then "\"1\""
9
+ when :float then "\"1.5\""
10
+ when :decimal then "\"9.99\""
11
+ when :datetime, :timestamp, :time then "Time.now"
12
+ when :date then "Date.today"
13
+ when :string, :text then "\"valor para #{@name}\""
14
+ when :boolean then "false"
15
+ else
16
+ "\"\""
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ Descrição:
2
+ Gera um teste, em RSpec, para um scaffold padrão do Rails, usando Factories.
3
+
4
+ Examplo:
5
+ ./script/generate factory_scaffold Aluno
6
+
7
+ Isto vai criar:
8
+ spec/models/aluno_spec.rb
9
+ spec/fixtures/alunos.yml
10
+ spec/controller/alunos_controller_spec.rb
11
+ spec/helpers/alunos_helper_spec.rb
12
+
13
+ NOTA: Este teste não cria as factories automaticamente, nem adiciona nenhuma informação
14
+ no arquivo spec_helper de como incluí-las. É necessário criar as factories manualmente
15
+ após gerar o factory_scaffold.
@@ -0,0 +1,27 @@
1
+ class FactoryScaffoldGenerator < Rails::Generator::NamedBase
2
+ attr_reader :file_plural, :class_plural
3
+
4
+ def manifest
5
+ record do |m|
6
+ # m.directory "lib"
7
+ # m.template 'README', "README"
8
+ m.class_collisions class_path, class_name
9
+
10
+ @file_plural = file_name.pluralize
11
+ @class_plural = class_name.pluralize
12
+
13
+ m.directory 'spec'
14
+ m.directory 'spec/controllers'
15
+ m.directory File.join('spec/controllers', class_path)
16
+ m.template 'controller_spec.rb.erb', File.join('spec/controllers', class_path, "#{@file_plural}_controller_spec.rb")
17
+
18
+ m.directory 'spec/models'
19
+ m.directory File.join('spec/models', class_path)
20
+ m.template 'model_spec.rb.erb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
21
+
22
+ m.directory 'spec/helpers'
23
+ m.directory File.join('spec/helpers', class_path)
24
+ m.template 'helper_spec.rb.erb', File.join('spec/helpers', class_path, "#{@file_plural}_helper_spec.rb")
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,135 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe <%= class_plural %>Controller do
4
+ integrate_views
5
+
6
+ context 'durante a exibição das telas (GET)' do
7
+ it 'deve exibir corretamente uma listagem' do
8
+ stub_<%= file_name %>
9
+ get :index
10
+ response.body.should include('Nome')
11
+ end
12
+
13
+ it 'deve exibir corretamente uma listagem XML' do
14
+ stub_<%= file_name %>
15
+ get :index, :format => 'xml'
16
+ response.should have_tag('nome', :text => 'Nome')
17
+ end
18
+
19
+ it 'deve exibir corretamente o dado de um <%= file_name %>' do
20
+ stub_<%= file_name %>
21
+ get :show, :id => @<%= file_name %>.id
22
+ response.body.should include('Nome')
23
+ end
24
+
25
+ it 'deve exibir corretamente o dado de um <%= file_name %> via XML' do
26
+ stub_<%= file_name %>
27
+ get :show, :id => @<%= file_name %>.id, :format => 'xml'
28
+ response.should have_tag('nome', :text => 'Nome')
29
+ end
30
+
31
+ it 'deve exibir corretamente uma tela de edição' do
32
+ stub_<%= file_name %>
33
+ get :edit, :id => @<%= file_name %>.id
34
+ response.should have_tag('form')
35
+ end
36
+
37
+ it 'deve exibir corretamente uma tela de criação' do
38
+ get :new
39
+ response.should have_tag('form')
40
+ end
41
+
42
+ it 'deve exibir corretamente uma tela de criação via XML' do
43
+ get :new, :format => 'xml'
44
+ response.should be_success
45
+ end
46
+ end
47
+
48
+ context 'na edição ou criação de <%= file_plural %>' do
49
+ context 'com atributos válidos' do
50
+ it 'deve criar um registro corretamente e redirecionar para ele' do
51
+ post :create, :<%= file_name %> => Factory.attributes_for(:<%= file_name %>)
52
+ response.should redirect_to(<%= file_name %>_url(<%= class_name %>.last))
53
+ end
54
+
55
+ it 'deve criar um registro corretamente via REST e apontar para sua URI' do
56
+ post :create, :<%= file_name %> => Factory.attributes_for(:<%= file_name %>), :format => 'xml'
57
+ response.response_code.should == 201
58
+ response.location.should == <%= file_name %>_url(<%= class_name %>.last)
59
+ end
60
+
61
+ it 'deve atualizar um registro corretamente e redirecionar para ele' do
62
+ stub_<%= file_name %>
63
+ @<%= file_name %>.should_receive(:save).and_return(true)
64
+ put :update, :<%= file_name %> => @<%= file_name %>.attributes
65
+ response.should redirect_to(<%= file_name %>_url(@<%= file_name %>))
66
+ end
67
+
68
+ it 'deve atualizar um registro corretamente via REST' do
69
+ stub_<%= file_name %>
70
+ @<%= file_name %>.should_receive(:save).and_return(true)
71
+ put :update, :<%= file_name %> => @<%= file_name %>.attributes, :format => 'xml'
72
+ response.should be_success
73
+ end
74
+ end
75
+
76
+ context 'com atributos inválidos' do
77
+ it 'deve impedir a criação de um registro, apresentar os erros e renderizar novamente a tela' do
78
+ stub_<%= file_name %>
79
+ <%= class_name %>.stub!(:new).and_return(@<%= file_name %>)
80
+ @<%= file_name %>.should_receive(:save).and_return(false)
81
+ @<%= file_name %>.errors.add(:atributo, 'possui um erro')
82
+ post :create, :<%= file_name %> => Factory.attributes_for(:<%= file_name %>)
83
+ response.should render_template('new')
84
+ response.body.should include('Atributo possui um erro')
85
+ end
86
+
87
+ it 'deve impedir a criação de um registro e apresentar um XML com os erros' do
88
+ stub_<%= file_name %>
89
+ <%= class_name %>.stub!(:new).and_return(@<%= file_name %>)
90
+ @<%= file_name %>.should_receive(:save).and_return(false)
91
+ post :create, :<%= file_name %> => Factory.attributes_for(:<%= file_name %>), :format => 'xml'
92
+ response.response_code.should == 422
93
+ response.should have_tag('errors')
94
+ end
95
+
96
+ it 'deve impedir a edição, apresentar os erros e renderizar novamente a tela' do
97
+ stub_<%= file_name %>
98
+ @<%= file_name %>.should_receive(:save).and_return(false)
99
+ @<%= file_name %>.errors.add(:atributo, 'possui um erro')
100
+ put :update, :<%= file_name %> => @<%= file_name %>.attributes
101
+ response.should render_template('edit')
102
+ response.body.should include('Atributo possui um erro')
103
+ end
104
+
105
+ it 'deve impedir a edição apresentar um XML com os erros' do
106
+ stub_<%= file_name %>
107
+ @<%= file_name %>.should_receive(:save).and_return(false)
108
+ put :update, :<%= file_name %> => @<%= file_name %>.attributes, :format => 'xml'
109
+ response.should have_tag('errors')
110
+ end
111
+ end
112
+ end
113
+
114
+ context 'na destruição de um registro' do
115
+ it 'deve remover o registro e redirecionar para a listagem' do
116
+ stub_<%= file_name %>
117
+ @<%= file_name %>.should_receive(:destroy).and_return(true)
118
+ delete :destroy, :id => @<%= file_name %>.id
119
+ response.should redirect_to(<%= file_plural %>_url)
120
+ end
121
+
122
+ it 'deve remover o registro via REST' do
123
+ stub_<%= file_name %>
124
+ @<%= file_name %>.should_receive(:destroy).and_return(true)
125
+ delete :destroy, :id => @<%= file_name %>.id, :format => 'xml'
126
+ response.should be_success
127
+ end
128
+ end
129
+ end
130
+
131
+ def stub_<%= file_name %>(atributos = {})
132
+ @<%= file_name %> = Factory.stub :<%= file_name %>, atributos
133
+ <%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
134
+ <%= class_name %>.stub!(:all).and_return([@<%= file_name %>])
135
+ end
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe <%= class_plural %>Helper do
4
+ include <%= class_plural %>Helper
5
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec/spec_helper'
2
+
3
+ describe <%= class_name %> do
4
+ it "deve ser válido com os dados corretos" do
5
+ @<%= file_plural %> = Factory.build(:<%= file_name %>)
6
+ @<%= file_plural %>.should be_valid
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ Descrição:
2
+ ferret_scaffold é semelhante ao scaffold normal do Rails, porém cria telas
3
+ mais simples, em português, e com suporte para o Ferret (inclusive
4
+ removendo acentuação das strings de busca).
5
+
6
+ Passe o nome do modelo no singular, e uma lista de atributos:tipo, assim
7
+ como seria feito no scaffold normal.
8
+
9
+ Exemplos:
10
+ `./script/generate ferret_scaffold post`
11
+ `./script/generate ferret_scaffold post title:string body:text published:boolean`
12
+ `./script/generate ferret_scaffold purchase order_id:integer amount:decimal`
@@ -0,0 +1,92 @@
1
+ require File.dirname(__FILE__) + '/../default_values'
2
+
3
+ class FerretScaffoldGenerator < Rails::Generator::NamedBase
4
+ default_options :skip_timestamps => false, :skip_migration => false, :force_plural => false, :skip_spec => false
5
+
6
+ attr_reader :file_plural, :class_plural
7
+
8
+ def manifest
9
+ record do |m|
10
+ m.class_collisions class_path, class_name
11
+
12
+ @file_plural = file_name.pluralize
13
+ @class_plural = class_name.pluralize
14
+
15
+ m.directory 'app'
16
+ m.directory 'app/controllers'
17
+ m.directory File.join('app/controllers', class_path)
18
+ m.template 'controller.rb.erb', File.join('app/controllers', class_path, "#{@file_plural}_controller.rb")
19
+
20
+ m.directory 'app'
21
+ m.directory 'app/models'
22
+ m.directory File.join('app/models', class_path)
23
+ m.template 'model.rb.erb', File.join('app/models', class_path, "#{file_name}.rb")
24
+
25
+ m.directory 'app'
26
+ m.directory 'app/helpers'
27
+ m.directory File.join('app/helpers', class_path)
28
+ m.template 'helper.rb.erb', File.join('app/helpers', class_path, "#{@file_plural}_helper.rb")
29
+
30
+ m.directory 'app'
31
+ m.directory 'app/views'
32
+ m.directory "app/views/#{@file_plural}"
33
+ m.template 'views/_dados_model.html.erb', File.join("app/views/#{@file_plural}", class_path, "_dados_#{file_name}.html.erb")
34
+ m.template 'views/_dados_busca.html.erb', File.join("app/views/#{@file_plural}", class_path, "_dados_busca.html.erb")
35
+ m.template 'views/index.html.erb', File.join("app/views/#{@file_plural}", class_path, "index.html.erb")
36
+ m.template 'views/new.html.erb', File.join("app/views/#{@file_plural}", class_path, "new.html.erb")
37
+ m.template 'views/edit.html.erb', File.join("app/views/#{@file_plural}", class_path, "edit.html.erb")
38
+ m.template 'views/show.html.erb', File.join("app/views/#{@file_plural}", class_path, "show.html.erb")
39
+
40
+ m.route_resources @file_plural
41
+
42
+ unless options[:skip_specs]
43
+ m.directory 'spec'
44
+ m.directory 'spec/controllers'
45
+ m.directory File.join('spec/controllers', class_path)
46
+ m.template 'controller_spec.rb.erb', File.join('spec/controllers', class_path, "#{@file_plural}_controller_spec.rb")
47
+
48
+ m.directory 'spec'
49
+ m.directory 'spec/models'
50
+ m.directory File.join('spec/models', class_path)
51
+ m.template 'model_spec.rb.erb', File.join('spec/models', class_path, "#{file_name}_spec.rb")
52
+
53
+ m.directory 'spec'
54
+ m.directory 'spec/helpers'
55
+ m.directory File.join('spec/helpers', class_path)
56
+ m.template 'helper_spec.rb.erb', File.join('spec/helpers', class_path, "#{@file_plural}_helper_spec.rb")
57
+
58
+ m.directory 'spec/fixtures'
59
+ m.template 'model:fixtures.yml', File.join('spec/fixtures', "#{table_name}.yml")
60
+ end
61
+
62
+ unless options[:skip_migrations]
63
+ m.migration_template(
64
+ 'migration.rb.erb', 'db/migrate',
65
+ :assigns => {
66
+ :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}",
67
+ :attributes => attributes
68
+ },
69
+ :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
70
+ )
71
+ end
72
+ end
73
+ end
74
+
75
+ protected
76
+ def banner
77
+ "Uso: #{$0} ferret_scaffold NomeModelo [campo:tipo campo:tipo ...] [opções]"
78
+ end
79
+
80
+ def add_options!(opt)
81
+ opt.separator ''
82
+ opt.separator 'Opções:'
83
+ opt.on("--skip-timestamps",
84
+ "Não adiciona a hora de criação e de alteração no modelo") { |v| options[:skip_timestamps] = v }
85
+ opt.on("--skip-migration",
86
+ "Não gera um migration para o modelo") { |v| options[:skip_migration] = v }
87
+ opt.on("--skip-specs",
88
+ "Não gera os SPECs para o código gerado") { |v| options[:skip_specs] = v }
89
+ opt.on('--skip-lock',
90
+ 'Não cria o lock_version na base de dados') { |v| options[:skip_lock] = v }
91
+ end
92
+ end
@@ -0,0 +1,128 @@
1
+ class <%= class_plural %>Controller < ApplicationController
2
+ # GET /<%= file_plural %>
3
+ # GET /<%= file_plural %>.xml
4
+ # GET /<%= file_plural %>.xml?busca=filtro
5
+ # GET /<%= file_plural %>.xml?atributo=valor
6
+ #
7
+ #Quando pede um XML, apresenta ou todos os registros, ou quando for buscado
8
+ #por um atributo, apresenta apenas os registros que satisfazem aquele atributo.
9
+ #Também é possível passar o parâmetro "busca", e fazer a busca com Ferret.
10
+ def index
11
+ respond_to do |format|
12
+ format.html # index.html.erb
13
+ format.xml do
14
+ if(params[:busca])
15
+ @<%= file_plural %> = <%= class_name %>.find_with_ferret(params[:busca])
16
+ else
17
+ conditions = {}
18
+ <%= class_name %>.column_names.each do |campo|
19
+ conditions.update(campo => params[campo]) if(params[campo])
20
+ end
21
+ @<%= file_plural %> = <%= class_name %>.all :conditions => conditions
22
+ end
23
+ render :xml => @<%= file_plural %>
24
+ end
25
+ end
26
+ end
27
+
28
+ # GET /<%= file_plural %>/1
29
+ # GET /<%= file_plural %>/1.xml
30
+ #
31
+ #Exibe uma tela com os dados do <%= file_name %>, ou um XML com os dados do <%= file_name %>.
32
+ def show
33
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
34
+
35
+ respond_to do |format|
36
+ format.html # show.html.erb
37
+ format.xml { render :xml => @<%= file_name %> }
38
+ end
39
+ end
40
+
41
+ # GET /<%= file_plural %>/new
42
+ # GET /<%= file_plural %>/new.xml
43
+ #
44
+ #Renderiza uma tela com um formulário de adição de <%= file_plural %>.
45
+ def new
46
+ @<%= file_name %> = <%= class_name %>.new
47
+
48
+ respond_to do |format|
49
+ format.html # new.html.erb
50
+ format.xml { render :xml => @<%= file_name %> }
51
+ end
52
+ end
53
+
54
+ # GET /<%= file_plural %>/1/edit
55
+ #
56
+ #Renderiza uma tela de edição para um <%= file_name %>.
57
+ def edit
58
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
59
+ end
60
+
61
+ # POST /<%= file_plural %>/buscar
62
+ #
63
+ #Busca, com o Ferret, os dados dos <%= file_plural %>.
64
+ def buscar
65
+ @<%= file_plural %> = <%= class_name %>.find_with_ferret(params[:busca])
66
+ render :partial => 'dados_busca'
67
+ end
68
+
69
+ # POST /<%= file_plural %>
70
+ # POST /<%= file_plural %>.xml
71
+ #
72
+ #Cria um <%= file_name %>, rodando suas validações e redirecionando para o
73
+ #registro criado.
74
+ def create
75
+ @<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>])
76
+
77
+ respond_to do |format|
78
+ if @<%= file_name %>.save
79
+ flash[:notice] = '<%= class_name %> foi criado com sucesso.'
80
+ format.html { redirect_to(@<%= file_name %>) }
81
+ format.xml { render :xml => @<%= file_name %>, :status => :created, :location => @<%= file_name %> }
82
+ else
83
+ format.html { render :action => "new" }
84
+ format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
85
+ end
86
+ end
87
+ end
88
+
89
+ # PUT /<%= file_plural %>/1
90
+ # PUT /<%= file_plural %>/1.xml
91
+ #
92
+ #Atualiza os dados de um <%= file_name %>, rodando suas validações, e redirecionando
93
+ #para o registro atualizado.
94
+ def update
95
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
96
+
97
+ respond_to do |format|
98
+ if @<%= file_name %>.update_attributes(params[:<%= file_name %>])
99
+ flash[:notice] = '<%= class_name %> foi atualizado com sucesso.'
100
+ format.html { redirect_to(@<%= file_name %>) }
101
+ format.xml { head :ok }
102
+ else
103
+ format.html { render :action => "edit" }
104
+ format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
105
+ end
106
+ end
107
+ end
108
+
109
+ # DELETE /<%= file_plural %>/1
110
+ # DELETE /<%= file_plural %>/1.xml
111
+ #
112
+ #Deleta um registro.
113
+ def destroy
114
+ @<%= file_name %> = <%= class_name %>.find(params[:id])
115
+
116
+ respond_to do |format|
117
+ if(@<%= file_name %>.destroy)
118
+ format.html { redirect_to(<%= file_plural %>_url) }
119
+ format.xml { head :ok }
120
+ else
121
+ dependents = @<%= file_name %>.errors.collect { |campo, erros| campo }
122
+ flash[:notice] = "Não foi possível deletar. Há #{dependents.join(' ou ')} cadastrados."
123
+ format.html { redirect_to(<%= file_plural %>_url) }
124
+ format.xml { render :xml => @<%= file_name %>.errors, :status => :unprocessable_entity }
125
+ end
126
+ end
127
+ end
128
+ end