prefab 1.0.0

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.
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 %>