zero_generators 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +38 -0
- data/generators/default_values.rb +21 -0
- data/generators/factory_scaffold/USAGE +15 -0
- data/generators/factory_scaffold/factory_scaffold_generator.rb +27 -0
- data/generators/factory_scaffold/templates/controller_spec.rb.erb +135 -0
- data/generators/factory_scaffold/templates/helper_spec.rb.erb +5 -0
- data/generators/factory_scaffold/templates/model_spec.rb.erb +8 -0
- data/generators/ferret_scaffold/USAGE +12 -0
- data/generators/ferret_scaffold/ferret_scaffold_generator.rb +92 -0
- data/generators/ferret_scaffold/templates/controller.rb.erb +128 -0
- data/generators/ferret_scaffold/templates/controller_spec.rb.erb +155 -0
- data/generators/ferret_scaffold/templates/helper.rb.erb +2 -0
- data/generators/ferret_scaffold/templates/helper_spec.rb.erb +7 -0
- data/generators/ferret_scaffold/templates/migration.rb.erb +20 -0
- data/generators/ferret_scaffold/templates/model.rb.erb +8 -0
- data/generators/ferret_scaffold/templates/model_spec.rb.erb +28 -0
- data/generators/ferret_scaffold/templates/views/_dados_busca.html.erb +11 -0
- data/generators/ferret_scaffold/templates/views/_dados_model.html.erb +8 -0
- data/generators/ferret_scaffold/templates/views/edit.html.erb +13 -0
- data/generators/ferret_scaffold/templates/views/index.html.erb +11 -0
- data/generators/ferret_scaffold/templates/views/layout.html.erb +18 -0
- data/generators/ferret_scaffold/templates/views/new.html.erb +12 -0
- data/generators/ferret_scaffold/templates/views/show.html.erb +16 -0
- data/generators/layout/USAGE +10 -0
- data/generators/layout/layout_generator.rb +22 -0
- data/generators/layout/templates/README +7 -0
- data/generators/layout/templates/layout.html.erb +26 -0
- data/generators/layout/templates/pt_BR.yml +109 -0
- data/generators/layout/templates/stylesheet.css +60 -0
- data/generators/tdd_controller/USAGE +9 -0
- data/generators/tdd_controller/tdd_controller_generator.rb +15 -0
- data/generators/tdd_controller/templates/controller_spec.rb.erb +29 -0
- data/generators/tdd_model/USAGE +10 -0
- data/generators/tdd_model/tdd_model_generator.rb +17 -0
- data/generators/tdd_model/templates/model_spec.rb.erb +24 -0
- data/generators/tdd_scaffold/USAGE +11 -0
- data/generators/tdd_scaffold/tdd_scaffold_generator.rb +32 -0
- data/generators/tdd_scaffold/templates/controller_spec.rb.erb +125 -0
- data/generators/tdd_scaffold/templates/helper_spec.rb.erb +7 -0
- data/generators/tdd_scaffold/templates/model_spec.rb.erb +28 -0
- data/generators/tdd_scaffold_stub/USAGE +17 -0
- data/generators/tdd_scaffold_stub/tdd_scaffold_stub_generator.rb +40 -0
- data/generators/tdd_scaffold_stub/templates/controller_spec.rb.erb +157 -0
- data/generators/tdd_scaffold_stub/templates/edit.html.erb_spec.rb.erb +14 -0
- data/generators/tdd_scaffold_stub/templates/helper_spec.rb.erb +7 -0
- data/generators/tdd_scaffold_stub/templates/index.html.erb_spec.rb.erb +14 -0
- data/generators/tdd_scaffold_stub/templates/model_spec.rb.erb +24 -0
- data/generators/tdd_scaffold_stub/templates/new.html.erb_spec.rb.erb +12 -0
- data/generators/tdd_scaffold_stub/templates/show.html.erb_spec.rb.erb +14 -0
- 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,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
|