gnarails 0.9.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 (101) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +227 -0
  3. data/.gitignore +5 -0
  4. data/.pronto.yml +2 -0
  5. data/.railsrc +2 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +3 -0
  8. data/.ruby-version +1 -0
  9. data/Brewfile +3 -0
  10. data/CHANGELOG.md +63 -0
  11. data/CODE_OF_CONDUCT.md +74 -0
  12. data/CONTRIBUTING.md +48 -0
  13. data/Gemfile +11 -0
  14. data/Gemfile.lock +213 -0
  15. data/LICENSE +21 -0
  16. data/README.md +136 -0
  17. data/Rakefile +6 -0
  18. data/bin/ci_pronto +6 -0
  19. data/bin/console +14 -0
  20. data/bin/generate-react-test-app.sh +2 -0
  21. data/bin/generate-test-app.sh +22 -0
  22. data/bin/setup +8 -0
  23. data/bin/test-setup.sh +8 -0
  24. data/exe/gnarails +4 -0
  25. data/gnarails.gemspec +34 -0
  26. data/gnarly.rb +395 -0
  27. data/lib/gnarails/cli/application.rb +192 -0
  28. data/lib/gnarails/version.rb +3 -0
  29. data/lib/gnarails.rb +8 -0
  30. data/templates/.circleci/config.yml +66 -0
  31. data/templates/.env.development +5 -0
  32. data/templates/.env.docker/.env.docker-standard +1 -0
  33. data/templates/.env.docker/.env.docker-webpack +2 -0
  34. data/templates/.env.docker-assets +1 -0
  35. data/templates/.env.test +5 -0
  36. data/templates/.gitignore +20 -0
  37. data/templates/.pronto.yml +2 -0
  38. data/templates/.rspec +3 -0
  39. data/templates/.rubocop.yml +3 -0
  40. data/templates/.ruby-version +1 -0
  41. data/templates/.scss-lint.yml +33 -0
  42. data/templates/Dockerfile +20 -0
  43. data/templates/Dockerfile-assets +24 -0
  44. data/templates/README.md +83 -0
  45. data/templates/database.yml +20 -0
  46. data/templates/docker-compose.yml/docker-compose-standard.yml +15 -0
  47. data/templates/docker-compose.yml/docker-compose-webpack.yml +26 -0
  48. data/templates/react/.babelrc +18 -0
  49. data/templates/react/.eslintrc.js +45 -0
  50. data/templates/react/controllers/home_controller.rb +4 -0
  51. data/templates/react/js/Router/Router.jsx +22 -0
  52. data/templates/react/js/Router/index.js +3 -0
  53. data/templates/react/js/api/index.js +17 -0
  54. data/templates/react/js/api/sessions.js +8 -0
  55. data/templates/react/js/app_constants/index.js +6 -0
  56. data/templates/react/js/components/App/App.jsx +15 -0
  57. data/templates/react/js/components/App/App.tests.jsx +15 -0
  58. data/templates/react/js/components/App/_styles.scss +3 -0
  59. data/templates/react/js/components/App/index.js +3 -0
  60. data/templates/react/js/index.scss +2 -0
  61. data/templates/react/js/packs/main.jsx +13 -0
  62. data/templates/react/js/redux/entity_getter.js +7 -0
  63. data/templates/react/js/redux/history.js +5 -0
  64. data/templates/react/js/redux/initial_state.js +5 -0
  65. data/templates/react/js/redux/middlewares/authentication_middleware/authentication_middleware.tests.js +109 -0
  66. data/templates/react/js/redux/middlewares/authentication_middleware/helpers.js +21 -0
  67. data/templates/react/js/redux/middlewares/authentication_middleware/helpers.tests.js +84 -0
  68. data/templates/react/js/redux/middlewares/authentication_middleware/index.js +20 -0
  69. data/templates/react/js/redux/middlewares/index.js +11 -0
  70. data/templates/react/js/redux/nodes/app/actions.js +36 -0
  71. data/templates/react/js/redux/nodes/app/config.js +12 -0
  72. data/templates/react/js/redux/nodes/app/reducer.js +35 -0
  73. data/templates/react/js/redux/nodes/app/reducer.tests.js +78 -0
  74. data/templates/react/js/redux/reducers.js +11 -0
  75. data/templates/react/js/redux/store.js +14 -0
  76. data/templates/react/js/storage.js +15 -0
  77. data/templates/react/js/styles/_variables.scss +1 -0
  78. data/templates/react/js/test/.setup.js +51 -0
  79. data/templates/react/js/test/connect_wrapper.jsx +28 -0
  80. data/templates/react/js/test/create_request_mock.js +29 -0
  81. data/templates/react/js/test/mock_store.js +12 -0
  82. data/templates/react/layout.html.erb +16 -0
  83. data/templates/react/rails_routes.rb +5 -0
  84. data/templates/react/views/home/default.html.erb +1 -0
  85. data/templates/script/brakeman +15 -0
  86. data/templates/script/ci_pronto +6 -0
  87. data/templates/spec/support/factory_bot.rb +5 -0
  88. data/templates/spec/support/system_test_configuration.rb +13 -0
  89. data/test-app/app/controllers/job_postings_controller.rb +5 -0
  90. data/test-app/app/models/comment.rb +3 -0
  91. data/test-app/app/models/job_posting.rb +20 -0
  92. data/test-app/app/views/job_postings/index.html.erb +23 -0
  93. data/test-app/app/views/layouts/application.html.erb +14 -0
  94. data/test-app/config/routes.rb +5 -0
  95. data/test-app/db/migrate/20170918002433_create_job_postings.rb +12 -0
  96. data/test-app/db/migrate/20170918002455_create_comments.rb +10 -0
  97. data/test-app/spec/factories/job_postings.rb +5 -0
  98. data/test-app/spec/models/job_posting_spec.rb +21 -0
  99. data/test-app/spec/requests/status_spec.rb +11 -0
  100. data/test-app/spec/system/viewing_all_job_postings_spec.rb +36 -0
  101. metadata +270 -0
@@ -0,0 +1,12 @@
1
+ import configureStore from 'redux-mock-store';
2
+ import thunkMiddleware from 'redux-thunk';
3
+
4
+ import authenticationMiddleware from 'redux/middlewares/authentication_middleware';
5
+
6
+ export const middlewares = [thunkMiddleware, authenticationMiddleware];
7
+
8
+ export default (store) => {
9
+ const mockStore = configureStore(middlewares);
10
+
11
+ return mockStore(store);
12
+ };
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>placeholder_application_title</title>
5
+ <%= csrf_meta_tags %>
6
+
7
+ <%= stylesheet_link_tag 'application', media: 'all' %>
8
+ <%= javascript_include_tag 'application' %>
9
+ <%= javascript_pack_tag 'main' %>
10
+ <%= stylesheet_pack_tag 'main' %>
11
+ </head>
12
+
13
+ <body>
14
+ <div id="react"></div>
15
+ </body>
16
+ </html>
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ root to: "home#default"
3
+
4
+ get "/*path", to: "home#default"
5
+ end
@@ -0,0 +1 @@
1
+ <div></div>
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+ #
3
+ # Script for running Brakeman tests
4
+ # Brakeman is a security scanner https://github.com/presidentbeef/brakeman.
5
+ gem install --no-rdoc --no-ri brakeman
6
+
7
+ brakeman --exit-on-warn --separate-models -o tmp/brakeman.html -o tmp/brakeman.text .
8
+ brakeman_exit_code=$?
9
+ cat tmp/brakeman.text
10
+
11
+ if [ $CIRCLE_ARTIFACTS ]; then
12
+ mv tmp/brakeman.html $CIRCLE_ARTIFACTS
13
+ fi
14
+
15
+ exit $brakeman_exit_code
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ #
3
+ # Script for running pronto on CI
4
+ export PRONTO_PULL_REQUEST_ID=${CI_PULL_REQUEST##*/}
5
+
6
+ bundle exec pronto run -f text github_pr github_status -c origin/master
@@ -0,0 +1,5 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryBot::Syntax::Methods
3
+ end
4
+
5
+ FactoryBot.use_parent_strategy = true
@@ -0,0 +1,13 @@
1
+ RSpec.configure do |config|
2
+ config.before(:each, type: :system) do
3
+ driven_by :rack_test
4
+ end
5
+
6
+ config.before(:each, type: :system, js: true) do
7
+ # If you don't want headless (for troubleshooting), use :selenium_chrome
8
+ # driven_by :selenium_chrome
9
+ #
10
+ # Keep headless committed, only use alternatives for troubleshooting
11
+ driven_by :selenium_chrome_headless
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class JobPostingsController < ApplicationController
2
+ def index
3
+ @job_postings = JobPosting.all
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ class Comment < ApplicationRecord
2
+ belongs_to :job_posting
3
+ end
@@ -0,0 +1,20 @@
1
+ class JobPosting < ApplicationRecord
2
+ has_many :comments
3
+
4
+ validates :title, presence: true
5
+
6
+ enum status: {
7
+ new_post: 0,
8
+ pending: 1,
9
+ complete: 2,
10
+ }
11
+
12
+ after_initialize :set_defaults
13
+
14
+ private
15
+
16
+ def set_defaults
17
+ self.posted_at ||= Time.zone.now
18
+ self.status ||= "new_post"
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ <div class="heading">
2
+ <h1>Job Postings</h1>
3
+ </div>
4
+
5
+ <table class="table">
6
+ <thead>
7
+ <tr>
8
+ <th>Posted At</th>
9
+ <th>Title</th>
10
+ <th>Status</th>
11
+ <th>Comments</th>
12
+ </thead>
13
+ <tbody>
14
+ <% @job_postings.each do |posting| %>
15
+ <tr class="job-posting-<%= posting.id %>">
16
+ <td class="posting-date"><%= posting.posted_at %></td>
17
+ <td class="posting-title"><%= posting.title %></td>
18
+ <td class="posting-status"><%= posting.status %></td>
19
+ <td><%= posting.comments.map(&:body) %></td>
20
+ </tr>
21
+ <% end %>
22
+ </tbody>
23
+ </table>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" role="main">
3
+ <head>
4
+ <title>RailsTestApp</title>
5
+ <%= csrf_meta_tags %>
6
+
7
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
8
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
9
+ </head>
10
+
11
+ <body>
12
+ <%= yield %>
13
+ </body>
14
+ </html>
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ root to: "job_postings#index"
3
+
4
+ resources :job_postings, only: [:index]
5
+ end
@@ -0,0 +1,12 @@
1
+ class CreateJobPostings < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :job_postings do |t|
4
+ t.string :title, null: false
5
+ t.integer :status, null: false, default: 0
6
+ t.text :description
7
+ t.datetime :posted_at, null: false
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ class CreateComments < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :comments do |t|
4
+ t.string :body
5
+ t.references :job_posting, foreign_key: true
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :job_posting do
3
+ title "Software Developer"
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe JobPosting, type: :model do
4
+ include ActiveSupport::Testing::TimeHelpers
5
+
6
+ it { should have_many :comments }
7
+ it { should validate_presence_of(:title) }
8
+ it { should define_enum_for(:status).with([:new_post, :pending, :complete]) }
9
+
10
+ describe "defaults" do
11
+ subject(:posting) { build :job_posting }
12
+ let(:posted_time) { Time.zone.local(2017, 4, 21, 4, 44) }
13
+
14
+ before { travel_to(posted_time) }
15
+
16
+ after { travel_back }
17
+
18
+ its(:posted_at) { should eq posted_time }
19
+ its(:status) { should eq "new_post" }
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.describe "Status endpoint", type: :request do
4
+ describe "/okcomputer" do
5
+ it "reports that the application is up" do
6
+ get "/okcomputer"
7
+
8
+ expect(response).to be_ok
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,36 @@
1
+ require "rails_helper"
2
+
3
+ RSpec.feature "Viewing all job postings", type: :system do
4
+ scenario "Accessibility", js: true do
5
+ create_list :job_posting, 1
6
+ visit job_postings_path
7
+
8
+ expect(page).to be_accessible
9
+ end
10
+
11
+ scenario "N+1 query proteection" do
12
+ job_posting = create :job_posting
13
+ job_posting.comments.create(body: "first comment")
14
+ job_posting.comments.create(body: "second comment")
15
+
16
+ another_posting = create :job_posting
17
+ another_posting.comments.create(body: "third comment")
18
+ another_posting.comments.create(body: "fourth comment")
19
+
20
+ expect { visit job_postings_path }
21
+ .to raise_error Bullet::Notification::UnoptimizedQueryError
22
+ end
23
+
24
+ scenario "Viewing a posting on the page" do
25
+ posting = create :job_posting
26
+ visit job_postings_path
27
+
28
+ expect(has_job_posting?(posting)).to be true
29
+ end
30
+
31
+ def has_job_posting?(posting)
32
+ within(".job-posting-#{posting.id}") do
33
+ expect(page).to have_css("td.posting-title", text: posting.title)
34
+ end
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,270 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gnarails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ platform: ruby
6
+ authors:
7
+ - The Gnar Company
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-03-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.16'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.16'
69
+ - !ruby/object:Gem::Dependency
70
+ name: gnar-style
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pronto
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pronto-rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '10.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ description:
140
+ email:
141
+ - hi@thegnar.co
142
+ executables:
143
+ - gnarails
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".circleci/config.yml"
148
+ - ".gitignore"
149
+ - ".pronto.yml"
150
+ - ".railsrc"
151
+ - ".rspec"
152
+ - ".rubocop.yml"
153
+ - ".ruby-version"
154
+ - Brewfile
155
+ - CHANGELOG.md
156
+ - CODE_OF_CONDUCT.md
157
+ - CONTRIBUTING.md
158
+ - Gemfile
159
+ - Gemfile.lock
160
+ - LICENSE
161
+ - README.md
162
+ - Rakefile
163
+ - bin/ci_pronto
164
+ - bin/console
165
+ - bin/generate-react-test-app.sh
166
+ - bin/generate-test-app.sh
167
+ - bin/setup
168
+ - bin/test-setup.sh
169
+ - exe/gnarails
170
+ - gnarails.gemspec
171
+ - gnarly.rb
172
+ - lib/gnarails.rb
173
+ - lib/gnarails/cli/application.rb
174
+ - lib/gnarails/version.rb
175
+ - templates/.circleci/config.yml
176
+ - templates/.env.development
177
+ - templates/.env.docker-assets
178
+ - templates/.env.docker/.env.docker-standard
179
+ - templates/.env.docker/.env.docker-webpack
180
+ - templates/.env.test
181
+ - templates/.gitignore
182
+ - templates/.pronto.yml
183
+ - templates/.rspec
184
+ - templates/.rubocop.yml
185
+ - templates/.ruby-version
186
+ - templates/.scss-lint.yml
187
+ - templates/Dockerfile
188
+ - templates/Dockerfile-assets
189
+ - templates/README.md
190
+ - templates/database.yml
191
+ - templates/docker-compose.yml/docker-compose-standard.yml
192
+ - templates/docker-compose.yml/docker-compose-webpack.yml
193
+ - templates/react/.babelrc
194
+ - templates/react/.eslintrc.js
195
+ - templates/react/controllers/home_controller.rb
196
+ - templates/react/js/Router/Router.jsx
197
+ - templates/react/js/Router/index.js
198
+ - templates/react/js/api/index.js
199
+ - templates/react/js/api/sessions.js
200
+ - templates/react/js/app_constants/index.js
201
+ - templates/react/js/components/App/App.jsx
202
+ - templates/react/js/components/App/App.tests.jsx
203
+ - templates/react/js/components/App/_styles.scss
204
+ - templates/react/js/components/App/index.js
205
+ - templates/react/js/index.scss
206
+ - templates/react/js/packs/main.jsx
207
+ - templates/react/js/redux/entity_getter.js
208
+ - templates/react/js/redux/history.js
209
+ - templates/react/js/redux/initial_state.js
210
+ - templates/react/js/redux/middlewares/authentication_middleware/authentication_middleware.tests.js
211
+ - templates/react/js/redux/middlewares/authentication_middleware/helpers.js
212
+ - templates/react/js/redux/middlewares/authentication_middleware/helpers.tests.js
213
+ - templates/react/js/redux/middlewares/authentication_middleware/index.js
214
+ - templates/react/js/redux/middlewares/index.js
215
+ - templates/react/js/redux/nodes/app/actions.js
216
+ - templates/react/js/redux/nodes/app/config.js
217
+ - templates/react/js/redux/nodes/app/reducer.js
218
+ - templates/react/js/redux/nodes/app/reducer.tests.js
219
+ - templates/react/js/redux/reducers.js
220
+ - templates/react/js/redux/store.js
221
+ - templates/react/js/storage.js
222
+ - templates/react/js/styles/_variables.scss
223
+ - templates/react/js/test/.setup.js
224
+ - templates/react/js/test/connect_wrapper.jsx
225
+ - templates/react/js/test/create_request_mock.js
226
+ - templates/react/js/test/mock_store.js
227
+ - templates/react/layout.html.erb
228
+ - templates/react/rails_routes.rb
229
+ - templates/react/views/home/default.html.erb
230
+ - templates/script/brakeman
231
+ - templates/script/ci_pronto
232
+ - templates/spec/support/factory_bot.rb
233
+ - templates/spec/support/system_test_configuration.rb
234
+ - test-app/app/controllers/job_postings_controller.rb
235
+ - test-app/app/models/comment.rb
236
+ - test-app/app/models/job_posting.rb
237
+ - test-app/app/views/job_postings/index.html.erb
238
+ - test-app/app/views/layouts/application.html.erb
239
+ - test-app/config/routes.rb
240
+ - test-app/db/migrate/20170918002433_create_job_postings.rb
241
+ - test-app/db/migrate/20170918002455_create_comments.rb
242
+ - test-app/spec/factories/job_postings.rb
243
+ - test-app/spec/models/job_posting_spec.rb
244
+ - test-app/spec/requests/status_spec.rb
245
+ - test-app/spec/system/viewing_all_job_postings_spec.rb
246
+ homepage: https://github.com/TheGnarCo/gnarails
247
+ licenses:
248
+ - MIT
249
+ metadata: {}
250
+ post_install_message:
251
+ rdoc_options: []
252
+ require_paths:
253
+ - lib
254
+ required_ruby_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: 2.5.0
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ requirements: []
265
+ rubyforge_project:
266
+ rubygems_version: 2.7.6
267
+ signing_key:
268
+ specification_version: 4
269
+ summary: Easily create a gnarly rails app.
270
+ test_files: []