fetty-generators 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.rdoc +69 -0
- data/Rakefile +3 -0
- data/lib/generators/fetty/layout/USAGE +26 -0
- data/lib/generators/fetty/layout/layout_generator.rb +44 -0
- data/lib/generators/fetty/layout/templates/application.js +55 -0
- data/lib/generators/fetty/layout/templates/error_messages_helper.rb +23 -0
- data/lib/generators/fetty/layout/templates/layout.html.erb +32 -0
- data/lib/generators/fetty/layout/templates/layout.html.haml +34 -0
- data/lib/generators/fetty/layout/templates/layout_helper.rb +22 -0
- data/lib/generators/fetty/layout/templates/no-devise-links-layout.html.erb +23 -0
- data/lib/generators/fetty/layout/templates/no-devise-links-layout.html.haml +23 -0
- data/lib/generators/fetty/layout/templates/stylesheet.css +166 -0
- data/lib/generators/fetty/layout/templates/stylesheet.sass +163 -0
- data/lib/generators/fetty/scaffold/USAGE +53 -0
- data/lib/generators/fetty/scaffold/scaffold_generator.rb +370 -0
- data/lib/generators/fetty/scaffold/templates/actions/create.rb +8 -0
- data/lib/generators/fetty/scaffold/templates/actions/destroy.rb +5 -0
- data/lib/generators/fetty/scaffold/templates/actions/edit.rb +3 -0
- data/lib/generators/fetty/scaffold/templates/actions/index.rb +10 -0
- data/lib/generators/fetty/scaffold/templates/actions/new.rb +3 -0
- data/lib/generators/fetty/scaffold/templates/actions/show.rb +3 -0
- data/lib/generators/fetty/scaffold/templates/actions/update.rb +8 -0
- data/lib/generators/fetty/scaffold/templates/controller.rb +7 -0
- data/lib/generators/fetty/scaffold/templates/fixtures.yml +9 -0
- data/lib/generators/fetty/scaffold/templates/helper.rb +2 -0
- data/lib/generators/fetty/scaffold/templates/migration.rb +16 -0
- data/lib/generators/fetty/scaffold/templates/model.rb +7 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/create.rb +11 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/edit.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/index.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/new.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/show.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/actions/update.rb +11 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/controller.rb +8 -0
- data/lib/generators/fetty/scaffold/templates/tests/rspec/model.rb +7 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/create.rb +13 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/index.rb +6 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/new.rb +6 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/show.rb +6 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/actions/update.rb +13 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/controller.rb +5 -0
- data/lib/generators/fetty/scaffold/templates/tests/shoulda/model.rb +7 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/create.rb +11 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/edit.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/index.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/new.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/show.rb +4 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/actions/update.rb +11 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/controller.rb +5 -0
- data/lib/generators/fetty/scaffold/templates/tests/testunit/model.rb +7 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/_form.html.erb +22 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/_table.html.erb +50 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/edit.html.erb +12 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/index.html.erb +13 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/index.js.erb +1 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/new.html.erb +9 -0
- data/lib/generators/fetty/scaffold/templates/views/erb/show.html.erb +26 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/_form.html.haml +8 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/_table.html.haml +33 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/edit.html.haml +14 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/index.html.haml +12 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/index.js.haml +1 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/new.html.haml +8 -0
- data/lib/generators/fetty/scaffold/templates/views/haml/show.html.haml +23 -0
- data/lib/generators/fetty/setup/USAGE +22 -0
- data/lib/generators/fetty/setup/setup_generator.rb +80 -0
- data/lib/generators/fetty/setup/templates/ability.rb +29 -0
- data/lib/generators/fetty.rb +38 -0
- metadata +137 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
it "create action should render new template when model is invalid" do
|
|
2
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
3
|
+
post :create
|
|
4
|
+
response.should render_template(:new)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
it "create action should redirect when model is valid" do
|
|
8
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
9
|
+
post :create
|
|
10
|
+
response.should redirect_to(<%= item_path_for_spec('url') %>)
|
|
11
|
+
end
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
it "destroy action should destroy model and redirect to index action" do
|
|
2
|
+
<%= instance_name %> = <%= class_name %>.first
|
|
3
|
+
delete :destroy, :id => <%= instance_name %>
|
|
4
|
+
response.should redirect_to(<%= items_url %>)
|
|
5
|
+
<%= class_name %>.exists?(<%= instance_name %>.id).should be_false
|
|
6
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
it "update action should render edit template when model is invalid" do
|
|
2
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
3
|
+
put :update, :id => <%= class_name %>.first
|
|
4
|
+
response.should render_template(:edit)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
it "update action should redirect when model is valid" do
|
|
8
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
9
|
+
put :update, :id => <%= class_name %>.first
|
|
10
|
+
response.should redirect_to(<%= item_path_for_spec('url') %>)
|
|
11
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
context "create action" do
|
|
2
|
+
should "render new template when model is invalid" do
|
|
3
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
4
|
+
post :create
|
|
5
|
+
assert_template 'new'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
should "redirect when model is valid" do
|
|
9
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
10
|
+
post :create
|
|
11
|
+
assert_redirected_to <%= item_path_for_test('url') %>
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
context "destroy action" do
|
|
2
|
+
should "destroy model and redirect to index action" do
|
|
3
|
+
<%= instance_name %> = <%= class_name %>.first
|
|
4
|
+
delete :destroy, :id => <%= instance_name %>
|
|
5
|
+
assert_redirected_to <%= items_url %>
|
|
6
|
+
assert !<%= class_name %>.exists?(<%= instance_name %>.id)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
context "update action" do
|
|
2
|
+
should "render edit template when model is invalid" do
|
|
3
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
4
|
+
put :update, :id => <%= class_name %>.first
|
|
5
|
+
assert_template 'edit'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
should "redirect when model is valid" do
|
|
9
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
10
|
+
put :update, :id => <%= class_name %>.first
|
|
11
|
+
assert_redirected_to <%= item_path_for_test('url') %>
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
def test_create_invalid
|
|
2
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
3
|
+
post :create
|
|
4
|
+
assert_template 'new'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def test_create_valid
|
|
8
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
9
|
+
post :create
|
|
10
|
+
assert_redirected_to <%= item_path_for_test('url') %>
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
def test_update_invalid
|
|
2
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
3
|
+
put :update, :id => <%= class_name %>.first
|
|
4
|
+
assert_template 'edit'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def test_update_valid
|
|
8
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
9
|
+
put :update, :id => <%= class_name %>.first
|
|
10
|
+
assert_redirected_to <%= item_path_for_test('url') %>
|
|
11
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%- unless @tinymce_name.empty? -%>
|
|
2
|
+
<%% content_for(:head) do %>
|
|
3
|
+
<%%= include_tiny_mce_if_needed %>
|
|
4
|
+
<%% end %>
|
|
5
|
+
<%- end -%>
|
|
6
|
+
<%%= simple_form_for @<%= instance_name %><%= ", :html => { :multipart => true }" unless @paperclip_name.empty? -%> do |f| %>
|
|
7
|
+
<%%= f.error_messages %>
|
|
8
|
+
|
|
9
|
+
<div class="inputs">
|
|
10
|
+
<%- for attribute in model_attributes -%>
|
|
11
|
+
<%- unless @tinymce_name.include?(attribute.name) -%>
|
|
12
|
+
<%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %>
|
|
13
|
+
<%- else -%>
|
|
14
|
+
<%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %>, :input_html => { :class => 'mceEditor' } %>
|
|
15
|
+
<%- end -%>
|
|
16
|
+
<%- end -%>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="actions">
|
|
20
|
+
<%%= f.button :submit %>
|
|
21
|
+
</div>
|
|
22
|
+
<%% end %>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<table class="pretty">
|
|
2
|
+
<tr>
|
|
3
|
+
<%- for attribute in model_attributes -%>
|
|
4
|
+
<%- unless @paperclip_name.include?(attribute.name) -%>
|
|
5
|
+
<th><%%= sort_link @search, :<%= attribute.name %> %></th>
|
|
6
|
+
<%- else -%>
|
|
7
|
+
<th><%= attribute.name %></th>
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- end -%>
|
|
10
|
+
<%- if action? :show -%>
|
|
11
|
+
<th></th>
|
|
12
|
+
<%- end -%>
|
|
13
|
+
<%- if action? :edit -%>
|
|
14
|
+
<th></th>
|
|
15
|
+
<%- end -%>
|
|
16
|
+
<%- if action? :destroy -%>
|
|
17
|
+
<th></th>
|
|
18
|
+
<%- end -%>
|
|
19
|
+
</tr>
|
|
20
|
+
<%% for <%= instance_name %> in @<%= instances_name %> %>
|
|
21
|
+
<tr>
|
|
22
|
+
<%- for attribute in model_attributes -%>
|
|
23
|
+
<%- if @paperclip_name.include?(attribute.name) -%>
|
|
24
|
+
<td><%%= image_tag <%= instance_name %>.<%= attribute.name %>.url %></td>
|
|
25
|
+
<%- elsif @tinymce_name.include?(attribute.name) -%>
|
|
26
|
+
<td><%%= raw <%= instance_name %>.<%= attribute.name %> %></td>
|
|
27
|
+
<%- else -%>
|
|
28
|
+
<td><%%= <%= instance_name %>.<%= attribute.name %> %></td>
|
|
29
|
+
<%- end -%>
|
|
30
|
+
<%- end -%>
|
|
31
|
+
<%- if action? :show -%>
|
|
32
|
+
<td>
|
|
33
|
+
<%= generate_action_links(:read, instance_name, "Show", instance_name) %>
|
|
34
|
+
</td>
|
|
35
|
+
<%- end -%>
|
|
36
|
+
<%- if action? :edit -%>
|
|
37
|
+
<td>
|
|
38
|
+
<%= generate_action_links(:update, instance_name, "Edit", "edit_#{singular_table_name}_path(#{instance_name})") %>
|
|
39
|
+
</td>
|
|
40
|
+
<%- end -%>
|
|
41
|
+
<%- if action? :destroy -%>
|
|
42
|
+
<td>
|
|
43
|
+
<%= generate_action_links(:destroy, instance_name, "Destroy", instance_name) %>
|
|
44
|
+
</td>
|
|
45
|
+
<%- end -%>
|
|
46
|
+
</tr>
|
|
47
|
+
<%% end %>
|
|
48
|
+
</table>
|
|
49
|
+
|
|
50
|
+
<p><%%= will_paginate @<%= instances_name %> %></p>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%% title "Edit <%= singular_name.titleize %>" %>
|
|
2
|
+
|
|
3
|
+
<%= render_form %>
|
|
4
|
+
|
|
5
|
+
<p>
|
|
6
|
+
<%- if action? :show -%>
|
|
7
|
+
<%= generate_action_links(:read, "@#{instance_name}", "Show", "@#{instance_name}") %> |
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- if action? :index -%>
|
|
10
|
+
<%= generate_action_links(:index, class_name, "View All", items_path) %>
|
|
11
|
+
<%- end -%>
|
|
12
|
+
</p>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%% title "<%= plural_name.titleize %>" %>
|
|
2
|
+
|
|
3
|
+
<%%= form_for @search, :url => <%= items_path %>, :html => {:id => "index_search", :method => :get} do |f| %>
|
|
4
|
+
<%%= f.text_field :<%= model_attributes[0].name %>_contains, :title => "Search by <%= model_attributes[0].name %>" %>
|
|
5
|
+
<%% end %>
|
|
6
|
+
|
|
7
|
+
<div id="index_table"><%= render_table %></div>
|
|
8
|
+
|
|
9
|
+
<%- if action? :new -%>
|
|
10
|
+
<p>
|
|
11
|
+
<%= generate_action_links(:create, class_name, "New #{singular_table_name.titleize}", "new_#{singular_table_name}_path") %>
|
|
12
|
+
</p>
|
|
13
|
+
<%- end -%>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
$("#index_table").html("<%%= escape_javascript(render("table")) %>");
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<%% title "<%= singular_name.titleize %>" %>
|
|
2
|
+
|
|
3
|
+
<%- for attribute in model_attributes -%>
|
|
4
|
+
<p>
|
|
5
|
+
<strong><%= attribute.human_name.titleize %>:</strong>
|
|
6
|
+
<%- if @paperclip_name.include?(attribute.name) -%>
|
|
7
|
+
<%%= image_tag @<%= instance_name %>.<%= attribute.name %>.url %>
|
|
8
|
+
<%- elsif @tinymce_name.include?(attribute.name) -%>
|
|
9
|
+
<%%= raw @<%= instance_name %>.<%= attribute.name %> %>
|
|
10
|
+
<%- else -%>
|
|
11
|
+
<%%= @<%= instance_name %>.<%= attribute.name %> %>
|
|
12
|
+
<%- end -%>
|
|
13
|
+
</p>
|
|
14
|
+
<%- end -%>
|
|
15
|
+
|
|
16
|
+
<p>
|
|
17
|
+
<%- if action? :edit -%>
|
|
18
|
+
<%= generate_action_links(:update, "@#{instance_name}", "Edit", "edit_#{singular_table_name}_path(@#{instance_name})") %> |
|
|
19
|
+
<%- end -%>
|
|
20
|
+
<%- if action? :destroy -%>
|
|
21
|
+
<%= generate_action_links(:destroy, "@#{instance_name}", "Destroy", "@#{instance_name}") %> |
|
|
22
|
+
<%- end -%>
|
|
23
|
+
<%- if action? :index -%>
|
|
24
|
+
<%= generate_action_links(:index, class_name, "View All", items_path) %>
|
|
25
|
+
<%- end -%>
|
|
26
|
+
</p>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
%table{:class => "pretty"}
|
|
2
|
+
%tr
|
|
3
|
+
<%- for attribute in model_attributes -%>
|
|
4
|
+
%th= sort_link @search, :<%= attribute.name %>
|
|
5
|
+
<%- end -%>
|
|
6
|
+
<%- if action? :show -%>
|
|
7
|
+
%th
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- if action? :edit -%>
|
|
10
|
+
%th
|
|
11
|
+
<%- end -%>
|
|
12
|
+
<%- if action? :destroy -%>
|
|
13
|
+
%th
|
|
14
|
+
<%- end -%>
|
|
15
|
+
- for <%= instance_name %> in @<%= instances_name %>
|
|
16
|
+
%tr
|
|
17
|
+
<%- for attribute in model_attributes -%>
|
|
18
|
+
%td= <%= instance_name %>.<%= attribute.name %>
|
|
19
|
+
<%- end -%>
|
|
20
|
+
<%- if action? :show -%>
|
|
21
|
+
- if can? :read, <%= instance_name %>
|
|
22
|
+
%td= link_to 'Show', <%= instance_name %>
|
|
23
|
+
<%- end -%>
|
|
24
|
+
<%- if action? :edit -%>
|
|
25
|
+
- if can? :update, <%= instance_name %>
|
|
26
|
+
%td= link_to 'Edit', <%= item_path :action => :edit %>
|
|
27
|
+
<%- end -%>
|
|
28
|
+
<%- if action? :destroy -%>
|
|
29
|
+
- if can? :destroy, <%= instance_name %>
|
|
30
|
+
%td= link_to 'Destroy', <%= item_path %>, :confirm => 'Are you sure?', :method => :delete
|
|
31
|
+
<%- end -%>
|
|
32
|
+
|
|
33
|
+
%p= will_paginate @<%= plural_name %>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
- title "Edit <%= singular_name.titleize %>"
|
|
2
|
+
|
|
3
|
+
<%= render_form %>
|
|
4
|
+
|
|
5
|
+
%p
|
|
6
|
+
<%- if action? :show -%>
|
|
7
|
+
- if can? :read, @<%= singular_name %>
|
|
8
|
+
= link_to "Show", @<%= singular_name %>
|
|
9
|
+
|
|
|
10
|
+
<%- end -%>
|
|
11
|
+
<%- if action? :index -%>
|
|
12
|
+
- if can? :index, <%= singular_name.titleize %>
|
|
13
|
+
= link_to "View All", <%= items_path %>
|
|
14
|
+
<%- end -%>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
- title "<%= plural_name.titleize %>"
|
|
2
|
+
|
|
3
|
+
= form_for @search, :url => <%= items_path %>, :html => {:id => "index_search", :method => :get} do |f|
|
|
4
|
+
= f.text_field :<%= model_attributes[0].name %>_contains, :title => "Search by <%= model_attributes[0].name %>"
|
|
5
|
+
|
|
6
|
+
#index_table
|
|
7
|
+
<%= render_table %>
|
|
8
|
+
|
|
9
|
+
<%- if actions? :new -%>
|
|
10
|
+
- if can? :create, <%= singular_name.titleize %>
|
|
11
|
+
%p= link_to "New <%= singular_name.titleize %>", new_<%= singular_name %>_path
|
|
12
|
+
<%- end -%>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!= "$('#index_table').html('#{escape_javascript(render :partial => 'table')}');"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
- title "<%= singular_name.titleize %>"
|
|
2
|
+
|
|
3
|
+
<%- for attribute in model_attributes -%>
|
|
4
|
+
%p
|
|
5
|
+
%strong <%= attribute.human_name.titleize %>:
|
|
6
|
+
= @<%= instance_name %>.<%= attribute.name %>
|
|
7
|
+
<%- end -%>
|
|
8
|
+
|
|
9
|
+
%p
|
|
10
|
+
<%- if action? :edit -%>
|
|
11
|
+
- if can? :update, @<%= singular_name %>
|
|
12
|
+
= link_to "Edit", <%= item_path :action => :edit, :instance_variable => true %>
|
|
13
|
+
|
|
|
14
|
+
<%- end -%>
|
|
15
|
+
<%- if action? :destroy -%>
|
|
16
|
+
- if can? :destroy, @<%= singular_name %>
|
|
17
|
+
= link_to "Destroy", <%= item_path :instance_variable => true %>, :confirm => 'Are you sure?', :method => :delete
|
|
18
|
+
|
|
|
19
|
+
<%- end -%>
|
|
20
|
+
<%- if action? :index -%>
|
|
21
|
+
- if can? :index, <%= singular_name.titleize %>
|
|
22
|
+
= link_to "View All", <%= items_path %>
|
|
23
|
+
<%- end -%>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
The fetty:setup generator creates a bunch of task to update your gemfile
|
|
3
|
+
with necessary gem need for you to build your rails app.
|
|
4
|
+
the basic installation required you to have :
|
|
5
|
+
- meta_search
|
|
6
|
+
- simple_form
|
|
7
|
+
- will_paginate
|
|
8
|
+
- jquery-rails
|
|
9
|
+
and the optional gems for Authentication & Autorization using :
|
|
10
|
+
- Devise
|
|
11
|
+
- CanCan
|
|
12
|
+
|
|
13
|
+
Examples:
|
|
14
|
+
rails generate fetty:setup
|
|
15
|
+
|
|
16
|
+
this default command will add gems to your Gemfile and install
|
|
17
|
+
some necessary files. both required and optional gems.
|
|
18
|
+
if you like to install minimum for layout and scaffolding using
|
|
19
|
+
fetty-generators, or you already have diffrent gems for authentication
|
|
20
|
+
or authorization you could skip the optional setup :
|
|
21
|
+
|
|
22
|
+
rails generate fetty:setup --skip-optional
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'generators/fetty'
|
|
2
|
+
|
|
3
|
+
module Fetty
|
|
4
|
+
module Generators
|
|
5
|
+
class SetupGenerator < Base
|
|
6
|
+
|
|
7
|
+
class_option :required, :desc => 'Only install required gems [meta_where, meta_search, will_paginate, simple_form, jquery-rails]', :type => :boolean, :default => true
|
|
8
|
+
class_option :optional, :desc => 'Only install optional gems such as [devise, cancan, paperclip, tiny_mce]', :type => :boolean, :default => true
|
|
9
|
+
|
|
10
|
+
def add_install_gems
|
|
11
|
+
|
|
12
|
+
#required
|
|
13
|
+
if options.required?
|
|
14
|
+
add_gem("meta_where")
|
|
15
|
+
add_gem("meta_search")
|
|
16
|
+
add_gem("will_paginate")
|
|
17
|
+
|
|
18
|
+
add_gem("simple_form")
|
|
19
|
+
generate("simple_form:install")
|
|
20
|
+
|
|
21
|
+
add_gem("jquery-rails")
|
|
22
|
+
generate("jquery:install")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# optional
|
|
26
|
+
if options.optional?
|
|
27
|
+
install_devise
|
|
28
|
+
install_cancan
|
|
29
|
+
install_paperclip
|
|
30
|
+
install_tiny_mce
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def install_devise
|
|
37
|
+
opt = ask("Would you like to install Devise for authentication? [yes]")
|
|
38
|
+
if opt == "yes" || opt.blank?
|
|
39
|
+
add_gem("devise")
|
|
40
|
+
generate("devise:install")
|
|
41
|
+
model_name = ask("Would you like the user model to be called? [user]")
|
|
42
|
+
model_name = "user" if model_name.blank?
|
|
43
|
+
generate("devise", model_name)
|
|
44
|
+
opt = ask("Would you like to set global authentications in application_controller.rb? [yes]")
|
|
45
|
+
if opt == "yes" || opt.blank?
|
|
46
|
+
inject_into_file 'app/controllers/application_controller.rb', :after => "class ApplicationController < ActionController::Base" do
|
|
47
|
+
"\n before_filter :authenticate_user!"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def install_cancan
|
|
54
|
+
opt = ask("Would you like to install CanCan for authorization? [yes]")
|
|
55
|
+
if opt == "yes" || opt.blank?
|
|
56
|
+
add_gem("cancan","~> 1.5.0")
|
|
57
|
+
copy_file 'ability.rb', 'app/models/ability.rb'
|
|
58
|
+
inject_into_file 'app/controllers/application_controller.rb', :after => "class ApplicationController < ActionController::Base" do
|
|
59
|
+
"\n rescue_from CanCan::AccessDenied do |exception| flash[:alert] = exception.message; redirect_to root_url end;"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def install_paperclip
|
|
65
|
+
opt = ask("Would you like to install Paperclip for handling your attachment? [yes]")
|
|
66
|
+
if opt == "yes" || opt.blank?
|
|
67
|
+
add_gem("paperclip")
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def install_tiny_mce
|
|
72
|
+
opt = ask("Would you like to install Tiny-MCE Editor? [yes]")
|
|
73
|
+
if opt == "yes" || opt.blank?
|
|
74
|
+
add_gem("tiny_mce")
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class Ability
|
|
2
|
+
include CanCan::Ability
|
|
3
|
+
|
|
4
|
+
def initialize(user)
|
|
5
|
+
# Define abilities for the passed in user here. For example:
|
|
6
|
+
#
|
|
7
|
+
# user ||= User.new # guest user (not logged in)
|
|
8
|
+
# if user.admin?
|
|
9
|
+
# can :manage, :all
|
|
10
|
+
# else
|
|
11
|
+
# can :read, :all
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# The first argument to `can` is the action you are giving the user permission to do.
|
|
15
|
+
# If you pass :manage it will apply to every action. Other common actions here are
|
|
16
|
+
# :read, :create, :update and :destroy.
|
|
17
|
+
#
|
|
18
|
+
# The second argument is the resource the user can perform the action on. If you pass
|
|
19
|
+
# :all it will apply to every resource. Otherwise pass a Ruby class of the resource.
|
|
20
|
+
#
|
|
21
|
+
# The third argument is an optional hash of conditions to further filter the objects.
|
|
22
|
+
# For example, here the user can only update published articles.
|
|
23
|
+
#
|
|
24
|
+
# can :update, Article, :published => true
|
|
25
|
+
#
|
|
26
|
+
# See the wiki for details: https://github.com/ryanb/cancan/wiki/Defining-Abilities
|
|
27
|
+
can :manage, :all
|
|
28
|
+
end
|
|
29
|
+
end
|