prefab 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +43 -0
  3. data/.travis.yml +9 -0
  4. data/Gemfile +26 -0
  5. data/LICENSE +21 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +134 -0
  8. data/Rakefile +154 -0
  9. data/lib/generators/api/USAGE +8 -0
  10. data/lib/generators/api/api_generator.rb +11 -0
  11. data/lib/generators/api/templates/api.rb +8 -0
  12. data/lib/generators/api/templates/api_spec.rb +5 -0
  13. data/lib/generators/datatable/USAGE +8 -0
  14. data/lib/generators/datatable/datatable_generator.rb +12 -0
  15. data/lib/generators/datatable/templates/datatable.rb +55 -0
  16. data/lib/generators/datatable/templates/javascript.js.coffee +8 -0
  17. data/lib/generators/report/USAGE +8 -0
  18. data/lib/generators/report/report_generator.rb +12 -0
  19. data/lib/generators/report/templates/report.rb +54 -0
  20. data/lib/generators/report/templates/report_spec.rb +14 -0
  21. data/lib/generators/service/USAGE +8 -0
  22. data/lib/generators/service/service_generator.rb +11 -0
  23. data/lib/generators/service/templates/service.rb +4 -0
  24. data/lib/generators/service/templates/service_spec.rb +8 -0
  25. data/lib/prefab.rb +18 -0
  26. data/lib/prefab/install/install_generator.rb +43 -0
  27. data/lib/prefab/install/templates/assets/stylesheets/bootstrap-variables.less +829 -0
  28. data/lib/prefab/install/templates/assets/stylesheets/bootstrap-variables.scss +833 -0
  29. data/lib/prefab/install/templates/assets/stylesheets/starter.css +22 -0
  30. data/lib/prefab/install/templates/assets/stylesheets/starter.less +23 -0
  31. data/lib/prefab/install/templates/assets/stylesheets/starter.scss +22 -0
  32. data/lib/prefab/install/templates/form_builders/form_builder/_form.html.erb +28 -0
  33. data/lib/prefab/install/templates/form_builders/form_builder/_form.html.haml +19 -0
  34. data/lib/prefab/install/templates/form_builders/form_builder/_form.html.slim +18 -0
  35. data/lib/prefab/install/templates/layouts/starter.html.erb +51 -0
  36. data/lib/prefab/install/templates/layouts/starter.html.haml +40 -0
  37. data/lib/prefab/install/templates/layouts/starter.html.slim +44 -0
  38. data/lib/prefab/install/templates/lib/templates/erb/controller/view.html.erb +4 -0
  39. data/lib/prefab/install/templates/lib/templates/erb/scaffold/edit.html.erb +13 -0
  40. data/lib/prefab/install/templates/lib/templates/erb/scaffold/index.html.erb +33 -0
  41. data/lib/prefab/install/templates/lib/templates/erb/scaffold/new.html.erb +9 -0
  42. data/lib/prefab/install/templates/lib/templates/erb/scaffold/show.html.erb +19 -0
  43. data/lib/prefab/install/templates/lib/templates/haml/controller/view.html.haml +3 -0
  44. data/lib/prefab/install/templates/lib/templates/haml/scaffold/edit.html.haml +10 -0
  45. data/lib/prefab/install/templates/lib/templates/haml/scaffold/index.html.haml +26 -0
  46. data/lib/prefab/install/templates/lib/templates/haml/scaffold/new.html.haml +7 -0
  47. data/lib/prefab/install/templates/lib/templates/haml/scaffold/show.html.haml +14 -0
  48. data/lib/prefab/install/templates/lib/templates/slim/controller/view.html.slim +5 -0
  49. data/lib/prefab/install/templates/lib/templates/slim/scaffold/edit.html.slim +12 -0
  50. data/lib/prefab/install/templates/lib/templates/slim/scaffold/index.html.slim +31 -0
  51. data/lib/prefab/install/templates/lib/templates/slim/scaffold/new.html.slim +9 -0
  52. data/lib/prefab/install/templates/lib/templates/slim/scaffold/show.html.slim +16 -0
  53. data/lib/prefab/version.rb +3 -0
  54. data/lib/templates/active_record/model/model.rb +26 -0
  55. data/lib/templates/haml/scaffold/_form.html.haml +16 -0
  56. data/lib/templates/haml/scaffold/edit.html.haml +9 -0
  57. data/lib/templates/haml/scaffold/index.html.haml +22 -0
  58. data/lib/templates/haml/scaffold/new.html.haml +7 -0
  59. data/lib/templates/haml/scaffold/show.html.haml +12 -0
  60. data/lib/templates/rails/scaffold_controller/controller.rb +68 -0
  61. data/lib/templates/rspec/model/model_spec.rb +13 -0
  62. data/prefab.gemspec +29 -0
  63. data/test/dummy/Rakefile +7 -0
  64. data/test/dummy/app/assets/javascripts/application.js +13 -0
  65. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  66. data/test/dummy/config.ru +4 -0
  67. data/test/dummy/config/application.rb +68 -0
  68. data/test/dummy/config/boot.rb +6 -0
  69. data/test/dummy/config/environment.rb +5 -0
  70. data/test/dummy/config/environments/test.rb +34 -0
  71. data/test/generators/prefab/install_generator_test.rb +86 -0
  72. data/test/test_helper.rb +7 -0
  73. metadata +198 -0
@@ -0,0 +1,22 @@
1
+ /*
2
+ *= require bootstrap
3
+ *= require_self
4
+ */
5
+
6
+ body {
7
+ padding-top: 60px;
8
+ }
9
+
10
+ .page-header a.btn {
11
+ float: right;
12
+ }
13
+
14
+ .page-header a.btn + a.btn {
15
+ margin-right: 8px;
16
+ }
17
+
18
+ input[type="radio"], input[type="checkbox"] {
19
+ width: initial;
20
+ height: initial;
21
+ margin-top: 7px;
22
+ }
@@ -0,0 +1,23 @@
1
+ @import "bootstrap";
2
+
3
+ body {
4
+ padding-top: @navbar-height + 10px;
5
+ }
6
+
7
+ @import "bootstrap-variables";
8
+
9
+ .page-header {
10
+ a.btn {
11
+ float: right;
12
+ }
13
+
14
+ a.btn + a.btn {
15
+ margin-right: 8px;
16
+ }
17
+ }
18
+
19
+ input[type="radio"], input[type="checkbox"] {
20
+ width: initial;
21
+ height: initial;
22
+ margin-top: 7px;
23
+ }
@@ -0,0 +1,22 @@
1
+ @import "bootstrap-variables";
2
+ @import "bootstrap.scss";
3
+
4
+ body {
5
+ padding-top: $navbar-height + 10px;
6
+ }
7
+
8
+ .page-header {
9
+ a.btn {
10
+ float: right;
11
+ }
12
+
13
+ a.btn + a.btn {
14
+ margin-right: 8px;
15
+ }
16
+ }
17
+
18
+ input[type="radio"], input[type="checkbox"] {
19
+ width: initial;
20
+ height: initial;
21
+ margin-top: 7px;
22
+ }
@@ -0,0 +1,28 @@
1
+ <%%= form_for(@<%= singular_table_name %>, :html => { :class => "form-horizontal" }) do |f| %>
2
+ <%% if @<%= singular_table_name %>.errors.any? %>
3
+ <div class="alert alert-danger alert-dismissable">
4
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
5
+ <h4><%%= pluralize(@<%= singular_table_name %>.errors.count, "error") %> prohibited this <%= singular_table_name %> from being saved:</h4>
6
+
7
+ <ul>
8
+ <%% @<%= singular_table_name %>.errors.full_messages.each do |msg| %>
9
+ <li><%%= msg %></li>
10
+ <%% end %>
11
+ </ul>
12
+ </div>
13
+ <%% end %>
14
+
15
+ <% attributes.each do |attribute| -%>
16
+ <div class="form-group">
17
+ <%%= f.label :<%= attribute.name %>, :class => "col-sm-2 control-label" %>
18
+ <div class="col-sm-10">
19
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %>, :class => "form-control" %>
20
+ </div>
21
+ </div>
22
+ <% end -%>
23
+ <div class="form-group">
24
+ <div class="col-sm-offset-2 col-sm-10">
25
+ <%%= f.submit :class => "btn btn-primary" %>
26
+ </div>
27
+ </div>
28
+ <%% end %>
@@ -0,0 +1,19 @@
1
+ = form_for @<%= singular_table_name %>, :html => { :class => "form-horizontal" } do |f|
2
+ -if @<%= singular_table_name %>.errors.any?
3
+ .alert.alert-danger.alert-dismissable
4
+ %button.close{"aria-hidden" => "true", "data-dismiss" => "alert", :type => "button"} &times;
5
+ %h4= "#{pluralize(@<%= singular_table_name %>.errors.count, "error")} prohibited this <%= singular_table_name %> from being saved:"
6
+
7
+ %ul
8
+ - @<%= singular_table_name %>.errors.full_messages.each do |msg|
9
+ %li= msg
10
+
11
+ <% for attribute in attributes -%>
12
+ .form-group
13
+ = f.label :<%= attribute.name %>, :class => 'col-sm-2 control-label'
14
+ .col-sm-10
15
+ = f.<%= attribute.field_type %> :<%= attribute.name %>, :class => 'form-control'
16
+ <% end -%>
17
+ .form-group
18
+ .col-sm-offset-2.col-sm-10
19
+ = f.submit :class => 'btn btn-primary'
@@ -0,0 +1,18 @@
1
+ = form_for(@<%= singular_table_name %>, :html => { :class => "form-horizontal" }) do |f|
2
+ - if @<%= singular_table_name %>.errors.any?
3
+ .alert.alert-danger.alert-dismissable
4
+ button.close type="button" data-dismiss="alert" aria-hidden="true"
5
+ | &times;
6
+ h4= "#{pluralize(@<%= singular_table_name %>.errors.count,"error")} prohibited this <%= singular_table_name %> from being saved:"
7
+ ul
8
+ - @<%= singular_table_name %>.errors.full_messages.each do |msg|
9
+ li= msg
10
+ <%- attributes.each do |attribute| -%>
11
+ .form-group
12
+ = f.label :<%= attribute.name %>, :class => "col-sm-2 control-label"
13
+ .col-sm-10
14
+ = f.<%= attribute.field_type %> :<%= attribute.name %>, :class => "form-control"
15
+ <%- end -%>
16
+ .form-group
17
+ .col-sm-offset-2.col-sm-10
18
+ = f.submit :class => "btn btn-primary"
@@ -0,0 +1,51 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Starter Template for Bootstrap</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
7
+ <meta name="description" content="">
8
+ <meta name="author" content="">
9
+
10
+ <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
11
+ <!--[if lt IE 9]>
12
+ <%%= javascript_include_tag "https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js", "https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js" %>
13
+ <![endif]-->
14
+
15
+ <%%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
16
+ <%%= javascript_include_tag "application", "data-turbolinks-track" => true %>
17
+ <%%= csrf_meta_tags %>
18
+ </head>
19
+ <body>
20
+ <div class="navbar navbar-inverse navbar-fixed-top">
21
+ <div class="container">
22
+ <div class="navbar-header">
23
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
24
+ <span class="sr-only">Toggle navigation</span>
25
+ <span class="icon-bar"></span>
26
+ <span class="icon-bar"></span>
27
+ <span class="icon-bar"></span>
28
+ </button>
29
+ <%%= link_to "Project name", "#", :class => "navbar-brand" %>
30
+ </div>
31
+ <div class="collapse navbar-collapse">
32
+ <ul class="nav navbar-nav">
33
+ <li class="active"><a href="#">Home</a></li>
34
+ <li><a href="#about">About</a></li>
35
+ <li><a href="#contact">Contact</a></li>
36
+ </ul>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ <div class="container">
41
+ <%% flash.each do |name, msg| %>
42
+ <%%= content_tag :div, :class => "alert alert-#{ name == :error ? "danger" : "success" } alert-dismissable" do %>
43
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
44
+ <%%= msg %>
45
+ <%% end %>
46
+ <%% end %>
47
+
48
+ <%%= yield %>
49
+ </div>
50
+ </body>
51
+ </html>
@@ -0,0 +1,40 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:charset => "utf-8"}
5
+ %title Starter Template for Bootstrap
6
+ %meta{:content => "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no", :name => "viewport"}
7
+ %meta{:content => "", :name => "description"}
8
+ %meta{:content => "", :name => "author"}
9
+
10
+ / Le HTML5 shim, for IE6-8 support of HTML5 elements
11
+ /[if lt IE 9]
12
+ = javascript_include_tag "https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js", "https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"
13
+
14
+ = stylesheet_link_tag "application", :media => "all", "data-turbolinks-track" => true
15
+ = javascript_include_tag "application", "data-turbolinks-track" => true
16
+ = csrf_meta_tags
17
+ %body
18
+ .navbar.navbar-inverse.navbar-fixed-top
19
+ .container
20
+ .navbar-header
21
+ %button.navbar-toggle{:type => "button", :data => {:toggle => "collapse", :target => ".navbar-collapse"} }
22
+ %span.sr-only Toggle navigation
23
+ %span.icon-bar
24
+ %span.icon-bar
25
+ %span.icon-bar
26
+ = link_to "Project name", "#", :class => "navbar-brand"
27
+ .collapse.navbar-collapse
28
+ %ul.nav.navbar-nav
29
+ %li.active
30
+ %a{:href => "#"} Home
31
+ %li
32
+ %a{:href => "#about"} About
33
+ %li
34
+ %a{:href => "#contact"} Contact
35
+ .container
36
+ - flash.each do |name, msg|
37
+ = content_tag :div, :class => "alert alert-#{name == :error ? "danger" : "success" } alert-dismissable" do
38
+ %button.close{:type => "button", :data => {:dismiss => "alert"}, :aria => {:hidden => "true"} } &times;
39
+ = msg
40
+ = yield
@@ -0,0 +1,44 @@
1
+ doctype html
2
+ html
3
+ head
4
+ meta charset="utf-8"
5
+ title
6
+ | Starter Template for Bootstrap
7
+ meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
8
+ meta name="description" content=""
9
+ meta name="author" content=""
10
+ /! HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
11
+ /[if lt IE 9]
12
+ = javascript_include_tag "https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js", "https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"
13
+ = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
14
+ = javascript_include_tag "application", "data-turbolinks-track" => true
15
+ = csrf_meta_tags
16
+ body
17
+ .navbar.navbar-inverse.navbar-fixed-top
18
+ .container
19
+ .navbar-header
20
+ button.navbar-toggle type="button" data-toggle="collapse" data-target=".navbar-collapse"
21
+ span.sr-only
22
+ | Toggle navigation
23
+ span.icon-bar
24
+ span.icon-bar
25
+ span.icon-bar
26
+ = link_to "Project name", "#", :class => "navbar-brand"
27
+ .collapse.navbar-collapse
28
+ ul.nav.navbar-nav
29
+ li.active
30
+ a href="#"
31
+ | Home
32
+ li
33
+ a href="#about"
34
+ | About
35
+ li
36
+ a href="#contact"
37
+ | Contact
38
+ .container
39
+ - flash.each do |name, msg|
40
+ = content_tag :div, :class => "alert alert-#{ name == :error ? "danger" : "success" } alert-dismissable" do
41
+ button.close type="button" data-dismiss="alert" aria-hidden="true"
42
+ | &times;
43
+ = msg
44
+ = yield
@@ -0,0 +1,4 @@
1
+ <div class="page-header">
2
+ <h1><%= class_name %>#<%= @action %></h1>
3
+ </div>
4
+ <p>Find me in <%= @path %></p>
@@ -0,0 +1,13 @@
1
+ <div class="page-header">
2
+ <%%= link_to <%= index_helper %>_path, :class => 'btn btn-default' do %>
3
+ <span class="glyphicon glyphicon-list-alt"></span>
4
+ Back
5
+ <%% end %>
6
+ <%%= link_to @<%= singular_table_name %>, :class => 'btn btn-primary' do %>
7
+ <span class="glyphicon glyphicon-info-sign"></span>
8
+ Show
9
+ <%% end %>
10
+ <h1>Editing <%= singular_table_name %></h1>
11
+ </div>
12
+
13
+ <%%= render 'form' %>
@@ -0,0 +1,33 @@
1
+ <div class="page-header">
2
+ <%%= link_to new_<%= singular_table_name %>_path, :class => 'btn btn-primary' do %>
3
+ <span class="glyphicon glyphicon-plus"></span>
4
+ New <%= human_name %>
5
+ <%% end %>
6
+ <h1>Listing <%= plural_table_name %></h1>
7
+ </div>
8
+
9
+ <div class="table-responsive">
10
+ <table class="table table-striped table-bordered table-hover">
11
+ <thead>
12
+ <tr>
13
+ <% attributes.each do |attribute| -%>
14
+ <th><%= attribute.human_name %></th>
15
+ <% end -%>
16
+ <th></th>
17
+ <th></th>
18
+ <th></th>
19
+ </tr>
20
+ </thead>
21
+
22
+ <tbody>
23
+ <%%= content_tag_for(:tr, @<%= plural_table_name %>) do |<%= singular_table_name %>| %>
24
+ <% attributes.each do |attribute| -%>
25
+ <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
26
+ <% end -%>
27
+ <td><%%= link_to 'Show', <%= singular_table_name %> %></td>
28
+ <td><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
29
+ <td><%%= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>
30
+ <%% end %>
31
+ </tbody>
32
+ </table>
33
+ </div>
@@ -0,0 +1,9 @@
1
+ <div class="page-header">
2
+ <%%= link_to <%= index_helper %>_path, :class => 'btn btn-default' do %>
3
+ <span class="glyphicon glyphicon-list-alt"></span>
4
+ Back
5
+ <%% end %>
6
+ <h1>New <%= singular_table_name %></h1>
7
+ </div>
8
+
9
+ <%%= render 'form' %>
@@ -0,0 +1,19 @@
1
+ <div class="page-header">
2
+ <%%= link_to <%= index_helper %>_path, :class => 'btn btn-default' do %>
3
+ <span class="glyphicon glyphicon-list-alt"></span>
4
+ Back
5
+ <%% end %>
6
+ <%%= link_to edit_<%= singular_table_name %>_path(@<%= singular_table_name %>), :class => 'btn btn-primary' do %>
7
+ <span class="glyphicon glyphicon-pencil"></span>
8
+ Edit
9
+ <%% end %>
10
+ <h1>Show <%= singular_table_name %></h1>
11
+ </div>
12
+
13
+ <dl class="dl-horizontal">
14
+ <%- attributes.each do |attribute| -%>
15
+ <dt><%= attribute.human_name %>:</dt>
16
+ <dd><%%= @<%= singular_table_name %>.<%= attribute.name %> %></dd>
17
+
18
+ <%- end -%>
19
+ </dl>
@@ -0,0 +1,3 @@
1
+ .page-header
2
+ %h1 <%= class_name %>#<%= @action %>
3
+ %p Find me in <%= @path %>
@@ -0,0 +1,10 @@
1
+ .page-header
2
+ = link_to <%= index_helper %>_path, :class => 'btn btn-default' do
3
+ %span.glyphicon.glyphicon-list-alt
4
+ Back
5
+ = link_to @<%= singular_table_name %>, :class => 'btn btn-primary' do
6
+ %span.glyphicon.glyphicon-info-sign
7
+ Show
8
+ %h1 Editing <%= singular_table_name %>
9
+
10
+ = render 'form'
@@ -0,0 +1,26 @@
1
+ .page-header
2
+ = link_to new_<%= singular_table_name %>_path, :class => 'btn btn-primary' do
3
+ %span.glyphicon.glyphicon-plus
4
+ New <%= human_name %>
5
+ %h1 Listing <%= plural_table_name %>
6
+
7
+ .table-responsive
8
+ %table.table.table-striped.table-bordered.table-hover
9
+ %thead
10
+ %tr
11
+ <% for attribute in attributes -%>
12
+ %th <%= attribute.human_name %>
13
+ <% end -%>
14
+ %th
15
+ %th
16
+ %th
17
+
18
+ %tbody
19
+ - @<%= plural_table_name %>.each do |<%= singular_table_name %>|
20
+ %tr
21
+ <% for attribute in attributes -%>
22
+ %td= <%= singular_table_name %>.<%= attribute.name %>
23
+ <% end -%>
24
+ %td= link_to 'Show', <%= singular_table_name %>
25
+ %td= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>)
26
+ %td= link_to 'Destroy', <%= singular_table_name %>, :data => { confirm: 'Are you sure?' }, :method => :delete
@@ -0,0 +1,7 @@
1
+ .page-header
2
+ = link_to <%= index_helper %>_path, :class => 'btn btn-default' do
3
+ %span.glyphicon.glyphicon-list-alt
4
+ Back
5
+ %h1 New <%= singular_table_name %>
6
+
7
+ = render 'form'
@@ -0,0 +1,14 @@
1
+ .page-header
2
+ = link_to <%= index_helper %>_path, :class => 'btn btn-default' do
3
+ %span.glyphicon.glyphicon-list-alt
4
+ Back
5
+ = link_to edit_<%= singular_table_name %>_path(@<%= singular_table_name %>), :class => 'btn btn-primary' do
6
+ %span.glyphicon.glyphicon-pencil
7
+ Edit
8
+ %h1 Show <%= singular_table_name %>
9
+
10
+ %dl.dl-horizontal
11
+ <%- for attribute in attributes -%>
12
+ %dt <%= attribute.human_name %>:
13
+ %dd= @<%= singular_table_name %>.<%= attribute.name %>
14
+ <%- end -%>
@@ -0,0 +1,5 @@
1
+ .page-header
2
+ h1
3
+ | <%= class_name %>#<%= @action %>
4
+ p
5
+ | Find me in <%= @path %>