garden_variety 3.0.0 → 4.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.
- checksums.yaml +4 -4
- data/README.md +38 -43
- data/Rakefile +1 -20
- data/lib/garden_variety/actions.rb +3 -3
- data/lib/garden_variety/controller.rb +37 -36
- data/lib/garden_variety/version.rb +1 -1
- data/lib/generators/garden/install/install_generator.rb +4 -0
- data/lib/generators/garden/optimized_generate_action.rb +14 -0
- data/lib/generators/garden/scaffold/scaffold_generator.rb +5 -1
- metadata +11 -54
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dd6dd125edefcf640a8a2aa1b629510eb3e5526551abfea71738b661c9fe1d83
|
|
4
|
+
data.tar.gz: ec5a4e29f8e1937dd74a88d11fdf087394a95cf67c56ceca177e9ce5fb9ae89e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bd41cf0735bfabe753a7bb4b5138d76a5e9c572952d5d4fb344f344dfe44926258c1a64ffe67b66875fcae5b09d9640fb8dfb8ce742a812bcbb0cfcad80b0d21
|
|
7
|
+
data.tar.gz: ba7d049d2952075c9a431dbd76b9ced59abc89918dfdbe589a7e8e183654a769669e6396e6e4546984bddf2057e7164a7f921ee849dacdee59c1f2d1ead39177
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Delightfully boring Rails controllers. One of the superb advantages of
|
|
4
4
|
Ruby on Rails is convention over configuration. Opinionated default
|
|
5
|
-
behavior can decrease development time
|
|
5
|
+
behavior can decrease development time and increase application
|
|
6
6
|
robustness (less custom code == less that can go wrong). In service of
|
|
7
7
|
this principle, *garden_variety* provides reasonable default controller
|
|
8
8
|
actions, with care to allow easy override.
|
|
@@ -139,20 +139,23 @@ end
|
|
|
139
139
|
The `::model_class` method returns a class corresponding to the
|
|
140
140
|
controller name, by default. That value can be overridden using the
|
|
141
141
|
matching `::model_class=` setter. The `model` / `collection` accessor
|
|
142
|
-
|
|
143
|
-
overridden as normal, a la carte. For a detailed
|
|
144
|
-
behavior, see the [API documentation](
|
|
145
|
-
(Note that the
|
|
146
|
-
|
|
142
|
+
method definitions are dictated by `::model_class`. The rest of the
|
|
143
|
+
methods can be overridden as normal, a la carte. For a detailed
|
|
144
|
+
description of method behavior, see the [API documentation](
|
|
145
|
+
https://www.rubydoc.info/gems/garden_variety/). (Note that the
|
|
146
|
+
`authorize`, `policy_scope`, and `permitted_attributes` methods are
|
|
147
|
+
provided by Pundit.)
|
|
147
148
|
|
|
148
149
|
|
|
149
150
|
## Scaffold generator
|
|
150
151
|
|
|
151
|
-
*garden_variety* includes a scaffold generator similar to the
|
|
152
|
-
scaffold generator:
|
|
152
|
+
*garden_variety* includes a `garden:scaffold` generator similar to the
|
|
153
|
+
Rails `scaffold` generator:
|
|
153
154
|
|
|
154
155
|
```
|
|
155
156
|
$ rails generate garden:scaffold post title:string body:text published:boolean
|
|
157
|
+
exist config/locales
|
|
158
|
+
create config/locales/flash.en.yml
|
|
156
159
|
generate resource
|
|
157
160
|
invoke active_record
|
|
158
161
|
create db/migrate/19991231235959_create_posts.rb
|
|
@@ -169,11 +172,6 @@ $ rails generate garden:scaffold post title:string body:text published:boolean
|
|
|
169
172
|
invoke helper
|
|
170
173
|
create app/helpers/posts_helper.rb
|
|
171
174
|
invoke test_unit
|
|
172
|
-
invoke assets
|
|
173
|
-
invoke coffee
|
|
174
|
-
create app/assets/javascripts/posts.coffee
|
|
175
|
-
invoke scss
|
|
176
|
-
create app/assets/stylesheets/posts.scss
|
|
177
175
|
invoke resource_route
|
|
178
176
|
route resources :posts
|
|
179
177
|
generate erb:scaffold
|
|
@@ -183,6 +181,7 @@ $ rails generate garden:scaffold post title:string body:text published:boolean
|
|
|
183
181
|
create app/views/posts/show.html.erb
|
|
184
182
|
create app/views/posts/new.html.erb
|
|
185
183
|
create app/views/posts/_form.html.erb
|
|
184
|
+
create app/views/posts/_post.html.erb
|
|
186
185
|
insert app/controllers/posts_controller.rb
|
|
187
186
|
generate pundit:policy
|
|
188
187
|
create app/policies/post_policy.rb
|
|
@@ -201,10 +200,10 @@ generator in a few small ways:
|
|
|
201
200
|
|
|
202
201
|
Additionally, if you are using the [talent_scout] gem, the scaffold
|
|
203
202
|
generator will invoke `rails generate talent_scout:search` for the
|
|
204
|
-
specified model. This behavior can be disabled with the
|
|
205
|
-
option. For more information about integrating
|
|
206
|
-
the [Searching with talent_scout](
|
|
207
|
-
below.
|
|
203
|
+
specified model. This behavior can be disabled with the
|
|
204
|
+
`--skip-talent-scout` option. For more information about integrating
|
|
205
|
+
with *talent_scout*, see the [Searching with talent_scout](
|
|
206
|
+
#searching-with-talent_scout) section below.
|
|
208
207
|
|
|
209
208
|
[talent_scout]: https://rubygems.org/gems/talent_scout
|
|
210
209
|
|
|
@@ -212,10 +211,10 @@ below.
|
|
|
212
211
|
## Flash messages
|
|
213
212
|
|
|
214
213
|
Flash messages are defined using I18n. The *garden_variety* installer
|
|
215
|
-
(`rails generate garden:install`) will create a
|
|
216
|
-
file containing default "success" and
|
|
217
|
-
this file to customize those messages,
|
|
218
|
-
to support other languages.
|
|
214
|
+
(`rails generate garden:install`) will create a
|
|
215
|
+
"config/locales/flash.en.yml" file containing default "success" and
|
|
216
|
+
"error" messages. You can edit this file to customize those messages,
|
|
217
|
+
or add your own translation files to support other languages.
|
|
219
218
|
|
|
220
219
|
As seen in the `PostsController#flash_message` method in the example
|
|
221
220
|
above, a prioritized list of keys are tried when retrieving a flash
|
|
@@ -231,8 +230,8 @@ Interpolation in flash messages is also supported (as described by
|
|
|
231
230
|
by the `flash_options` method. By default, `flash_options` provides a
|
|
232
231
|
`model_name` value, but you can override it to provide your own values.
|
|
233
232
|
|
|
234
|
-
[Safe HTML Translations]:
|
|
235
|
-
[Passing Variables to Translations]:
|
|
233
|
+
[Safe HTML Translations]: https://guides.rubyonrails.org/i18n.html#using-safe-html-translations
|
|
234
|
+
[Passing Variables to Translations]: https://guides.rubyonrails.org/i18n.html#passing-variables-to-translations
|
|
236
235
|
|
|
237
236
|
|
|
238
237
|
## Beyond garden variety behavior
|
|
@@ -261,7 +260,7 @@ end
|
|
|
261
260
|
|
|
262
261
|
### Pagination
|
|
263
262
|
|
|
264
|
-
You can integrate your
|
|
263
|
+
You can integrate your favorite pagination gem (*may I suggest
|
|
265
264
|
[moar](https://rubygems.org/gems/moar)?*) by overriding the
|
|
266
265
|
`find_collection` method:
|
|
267
266
|
|
|
@@ -295,7 +294,7 @@ end
|
|
|
295
294
|
|
|
296
295
|
If you are using the [talent_scout] gem, the default implementation of
|
|
297
296
|
`find_collection` will automatically instantiate your model search class
|
|
298
|
-
-- no
|
|
297
|
+
-- no custom code required. For example, if a `PostSearch` class is
|
|
299
298
|
defined, `PostsController#find_collection` will be equivalent to:
|
|
300
299
|
|
|
301
300
|
```ruby
|
|
@@ -305,9 +304,11 @@ def find_collection
|
|
|
305
304
|
end
|
|
306
305
|
```
|
|
307
306
|
|
|
308
|
-
Notice, as a side effect, the `@search` variable is set for
|
|
309
|
-
the view.
|
|
310
|
-
|
|
307
|
+
Notice, as a side effect, the `@search` instance variable is set for
|
|
308
|
+
later use in the view.
|
|
309
|
+
|
|
310
|
+
The model search class will be chosen based on the controller's
|
|
311
|
+
`::model_class`. For example:
|
|
311
312
|
|
|
312
313
|
```ruby
|
|
313
314
|
class MyPostsController < ApplicationController
|
|
@@ -457,10 +458,10 @@ end
|
|
|
457
458
|
In this example, only the `new` and `create` actions are generated by
|
|
458
459
|
the `garden_variety` macro. The on-success behavior of `create` is
|
|
459
460
|
overridden to redirect to `root_path`, using the concise syntax
|
|
460
|
-
discussed in the [
|
|
461
|
-
The *garden_variety* controller helper methods all work as
|
|
462
|
-
because `RegistrationForm` responds to `assign_attributes` and
|
|
463
|
-
and has a default (nullary) constructor.
|
|
461
|
+
discussed in the [Server-generated JavaScript Responses (SJR)](#server-generated-javascript-responses-sjr)
|
|
462
|
+
example. The *garden_variety* controller helper methods all work as
|
|
463
|
+
expected because `RegistrationForm` responds to `assign_attributes` and
|
|
464
|
+
`save`, and has a default (nullary) constructor.
|
|
464
465
|
|
|
465
466
|
|
|
466
467
|
### Non-REST actions
|
|
@@ -510,19 +511,13 @@ from RailsConf which delves deeper into the principle:
|
|
|
510
511
|
|
|
511
512
|
## Installation
|
|
512
513
|
|
|
513
|
-
Add
|
|
514
|
-
|
|
515
|
-
```ruby
|
|
516
|
-
gem "garden_variety"
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
Then execute:
|
|
514
|
+
Add the gem to your Gemfile:
|
|
520
515
|
|
|
521
516
|
```bash
|
|
522
|
-
$ bundle
|
|
517
|
+
$ bundle add garden_variety
|
|
523
518
|
```
|
|
524
519
|
|
|
525
|
-
And
|
|
520
|
+
And run the install generator:
|
|
526
521
|
|
|
527
522
|
```bash
|
|
528
523
|
$ rails generate garden:install
|
|
@@ -533,9 +528,9 @@ This will also run the Pundit install generator, if necessary.
|
|
|
533
528
|
|
|
534
529
|
## Contributing
|
|
535
530
|
|
|
536
|
-
Run `
|
|
531
|
+
Run `bin/test` to run the tests.
|
|
537
532
|
|
|
538
533
|
|
|
539
534
|
## License
|
|
540
535
|
|
|
541
|
-
[MIT License](
|
|
536
|
+
[MIT License](MIT-LICENSE)
|
data/Rakefile
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
require 'bundler/setup'
|
|
3
|
-
rescue LoadError
|
|
4
|
-
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
require 'yard'
|
|
8
|
-
|
|
9
|
-
YARD::Rake::YardocTask.new(:doc) do |t|
|
|
10
|
-
end
|
|
1
|
+
require 'bundler/setup'
|
|
11
2
|
|
|
12
3
|
require 'bundler/gem_tasks'
|
|
13
|
-
|
|
14
|
-
require 'rake/testtask'
|
|
15
|
-
|
|
16
|
-
Rake::TestTask.new(:test) do |t|
|
|
17
|
-
t.libs << 'test'
|
|
18
|
-
t.test_files = FileList['test/**/*_test.rb'].exclude('test/tmp/**/*')
|
|
19
|
-
t.verbose = false
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
task default: :test
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module GardenVariety
|
|
2
2
|
|
|
3
|
-
REDIRECT_CODES = [301, 302, 303, 307, 308]
|
|
3
|
+
REDIRECT_CODES = [301, 302, 303, 307, 308].to_set
|
|
4
4
|
|
|
5
5
|
module IndexAction
|
|
6
6
|
# Garden variety controller +index+ action.
|
|
@@ -94,8 +94,8 @@ module GardenVariety
|
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
# Map of controller action name to action module. Used by the
|
|
97
|
-
# {GardenVariety::Controller::ClassMethods#garden_variety
|
|
98
|
-
# include desired controller actions.
|
|
97
|
+
# {GardenVariety::Controller::ClassMethods#garden_variety
|
|
98
|
+
# garden_variety} macro to include desired controller actions.
|
|
99
99
|
ACTION_MODULES = {
|
|
100
100
|
index: IndexAction,
|
|
101
101
|
show: ShowAction,
|
|
@@ -2,7 +2,7 @@ module GardenVariety
|
|
|
2
2
|
module Controller
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
|
-
include Pundit
|
|
5
|
+
include Pundit::Authorization
|
|
6
6
|
|
|
7
7
|
module ClassMethods
|
|
8
8
|
# Macro to include garden variety implementations of specified
|
|
@@ -10,16 +10,15 @@ module GardenVariety
|
|
|
10
10
|
# typical REST actions (index, show, new, create, edit, update,
|
|
11
11
|
# destroy) are included.
|
|
12
12
|
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
# - {GardenVariety::DestroyAction}
|
|
13
|
+
# @see GardenVariety::IndexAction
|
|
14
|
+
# @see GardenVariety::ShowAction
|
|
15
|
+
# @see GardenVariety::NewAction
|
|
16
|
+
# @see GardenVariety::CreateAction
|
|
17
|
+
# @see GardenVariety::EditAction
|
|
18
|
+
# @see GardenVariety::UpdateAction
|
|
19
|
+
# @see GardenVariety::DestroyAction
|
|
21
20
|
#
|
|
22
|
-
# @example
|
|
21
|
+
# @example Default actions
|
|
23
22
|
# # This...
|
|
24
23
|
# class PostsController < ApplicationController
|
|
25
24
|
# garden_variety
|
|
@@ -36,7 +35,7 @@ module GardenVariety
|
|
|
36
35
|
# include GardenVariety::DestroyAction
|
|
37
36
|
# end
|
|
38
37
|
#
|
|
39
|
-
# @example
|
|
38
|
+
# @example Specific actions
|
|
40
39
|
# # This...
|
|
41
40
|
# class PostsController < ApplicationController
|
|
42
41
|
# garden_variety :index, :show
|
|
@@ -104,7 +103,7 @@ module GardenVariety
|
|
|
104
103
|
|
|
105
104
|
# @!visibility public
|
|
106
105
|
# Returns the value of the singular-form instance variable dictated
|
|
107
|
-
# by {::model_class}.
|
|
106
|
+
# by {ClassMethods#model_class ::model_class}.
|
|
108
107
|
#
|
|
109
108
|
# @example
|
|
110
109
|
# class PostsController
|
|
@@ -123,7 +122,7 @@ module GardenVariety
|
|
|
123
122
|
|
|
124
123
|
# @!visibility public
|
|
125
124
|
# Sets the value of the singular-form instance variable dictated
|
|
126
|
-
# by {::model_class}.
|
|
125
|
+
# by {ClassMethods#model_class ::model_class}.
|
|
127
126
|
#
|
|
128
127
|
# @example
|
|
129
128
|
# class PostsController
|
|
@@ -143,7 +142,7 @@ module GardenVariety
|
|
|
143
142
|
|
|
144
143
|
# @!visibility public
|
|
145
144
|
# Returns the value of the plural-form instance variable dictated
|
|
146
|
-
# by {::model_class}.
|
|
145
|
+
# by {ClassMethods#model_class ::model_class}.
|
|
147
146
|
#
|
|
148
147
|
# @example
|
|
149
148
|
# class PostsController
|
|
@@ -162,7 +161,7 @@ module GardenVariety
|
|
|
162
161
|
|
|
163
162
|
# @!visibility public
|
|
164
163
|
# Sets the value of the plural-form instance variable dictated
|
|
165
|
-
# by {::model_class}.
|
|
164
|
+
# by {ClassMethods#model_class ::model_class}.
|
|
166
165
|
#
|
|
167
166
|
# @example
|
|
168
167
|
# class PostsController
|
|
@@ -181,9 +180,9 @@ module GardenVariety
|
|
|
181
180
|
end
|
|
182
181
|
|
|
183
182
|
# @!visibility public
|
|
184
|
-
# Returns an ActiveRecord::Relation representing
|
|
185
|
-
#
|
|
186
|
-
# +index+ action methods.
|
|
183
|
+
# Returns an ActiveRecord::Relation representing instances of
|
|
184
|
+
# {ClassMethods#model_class ::model_class}. Designed for use in
|
|
185
|
+
# generic +index+ action methods.
|
|
187
186
|
#
|
|
188
187
|
# @example
|
|
189
188
|
# class PostsController < ApplicationController
|
|
@@ -198,10 +197,10 @@ module GardenVariety
|
|
|
198
197
|
end
|
|
199
198
|
|
|
200
199
|
# @!visibility public
|
|
201
|
-
# Returns
|
|
202
|
-
# id parameter of the current request (i.e.
|
|
203
|
-
# Designed for use in generic +show+, +edit+,
|
|
204
|
-
# +destroy+ action methods.
|
|
200
|
+
# Returns an instance of {ClassMethods#model_class ::model_class}
|
|
201
|
+
# matching the +:id+ parameter of the current request (i.e.
|
|
202
|
+
# +params[:id]+). Designed for use in generic +show+, +edit+,
|
|
203
|
+
# +update+, and +destroy+ action methods.
|
|
205
204
|
#
|
|
206
205
|
# @example
|
|
207
206
|
# class PostsController < ApplicationController
|
|
@@ -211,12 +210,14 @@ module GardenVariety
|
|
|
211
210
|
# end
|
|
212
211
|
#
|
|
213
212
|
# @return [ActiveRecord::Base]
|
|
213
|
+
# @raise [ActiveRecord::RecordNotFound]
|
|
214
|
+
# if a model instance with matching +:id+ cannot be found
|
|
214
215
|
def find_model
|
|
215
216
|
self.class.model_class.find(params[:id])
|
|
216
217
|
end
|
|
217
218
|
|
|
218
219
|
# @!visibility public
|
|
219
|
-
# Returns a new
|
|
220
|
+
# Returns a new instance of {ClassMethods#model_class ::model_class}.
|
|
220
221
|
# Designed for use in generic +new+ and +create+ action methods.
|
|
221
222
|
#
|
|
222
223
|
# @example
|
|
@@ -232,9 +233,9 @@ module GardenVariety
|
|
|
232
233
|
end
|
|
233
234
|
|
|
234
235
|
# @!visibility public
|
|
235
|
-
# Populates the given model's attributes with the current request
|
|
236
|
-
# params permitted by the
|
|
237
|
-
# model modified but not persisted.
|
|
236
|
+
# Populates the given +model+'s attributes with the current request
|
|
237
|
+
# params permitted by the corresponding Pundit policy. Returns the
|
|
238
|
+
# given +model+ modified but not persisted.
|
|
238
239
|
#
|
|
239
240
|
# @example
|
|
240
241
|
# class PostsController < ApplicationController
|
|
@@ -256,23 +257,23 @@ module GardenVariety
|
|
|
256
257
|
end
|
|
257
258
|
|
|
258
259
|
# @!visibility public
|
|
259
|
-
# Returns Hash of values for interpolation in flash messages via
|
|
260
|
-
# I18n. By default, returns a
|
|
261
|
-
#
|
|
260
|
+
# Returns a Hash of values for interpolation in flash messages via
|
|
261
|
+
# I18n. By default, returns a +:model_name+ key / value pair with
|
|
262
|
+
# the humanized name of {ClassMethods#model_class ::model_class}.
|
|
262
263
|
# Override this method to provide your own values. Be aware that
|
|
263
|
-
# certain option names, such as
|
|
264
|
-
# by the I18n gem, and can not be used for interpolation.
|
|
265
|
-
# {https://www.rubydoc.info/gems/i18n I18n documentation}
|
|
266
|
-
# information.
|
|
264
|
+
# certain option names, such as +:default+ and +:scope+, are
|
|
265
|
+
# reserved by the I18n gem, and can not be used for interpolation.
|
|
266
|
+
# See the {https://www.rubydoc.info/gems/i18n I18n documentation}
|
|
267
|
+
# for more information.
|
|
267
268
|
#
|
|
268
|
-
# @return [Hash]
|
|
269
|
+
# @return [Hash{Symbol => #to_s}]
|
|
269
270
|
def flash_options
|
|
270
271
|
{ model_name: self.class.model_name.human }
|
|
271
272
|
end
|
|
272
273
|
|
|
273
274
|
# @!visibility public
|
|
274
275
|
# Returns a flash message appropriate to the controller, the current
|
|
275
|
-
# action, and a given status
|
|
276
|
+
# action, and a given +status+. The flash message is looked up via
|
|
276
277
|
# I18n using a prioritized list of possible keys. The key priority
|
|
277
278
|
# is as follows:
|
|
278
279
|
#
|
|
@@ -329,7 +330,7 @@ module GardenVariety
|
|
|
329
330
|
:"flash.#{status}",
|
|
330
331
|
:"flash.#{status}_html",
|
|
331
332
|
]
|
|
332
|
-
helpers.translate(keys.shift,
|
|
333
|
+
helpers.translate(keys.shift, default: keys, **flash_options)
|
|
333
334
|
end
|
|
334
335
|
end
|
|
335
336
|
end
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
require "generators/garden/optimized_generate_action"
|
|
2
|
+
|
|
1
3
|
# @!visibility private
|
|
2
4
|
module Garden
|
|
3
5
|
module Generators
|
|
4
6
|
class InstallGenerator < Rails::Generators::Base
|
|
7
|
+
include OptimizedGenerateAction
|
|
8
|
+
|
|
5
9
|
source_root File.join(__dir__, "templates")
|
|
6
10
|
|
|
7
11
|
def copy_locales
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
require "generators/garden/optimized_generate_action"
|
|
2
|
+
|
|
1
3
|
# @!visibility private
|
|
2
4
|
module Garden
|
|
3
5
|
module Generators
|
|
4
6
|
class ScaffoldGenerator < Rails::Generators::Base
|
|
7
|
+
include OptimizedGenerateAction
|
|
8
|
+
|
|
5
9
|
source_root File.join(__dir__, "templates")
|
|
6
10
|
|
|
7
11
|
argument :resource, type: :string
|
|
@@ -12,7 +16,7 @@ module Garden
|
|
|
12
16
|
class_option :template_engine
|
|
13
17
|
|
|
14
18
|
class_option :talent_scout, type: :boolean, default: true,
|
|
15
|
-
|
|
19
|
+
desc: "Invoke talent_scout:search generator"
|
|
16
20
|
|
|
17
21
|
# override +initialize+ because it is the only way to reliably
|
|
18
22
|
# capture the raw input arguments in order to pass them on to
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: garden_variety
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jonathan Hefner
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rails
|
|
@@ -16,14 +15,14 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
18
|
+
version: '8.1'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
25
|
+
version: '8.1'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: pundit
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -38,51 +37,8 @@ dependencies:
|
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
39
|
version: '2.0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: sqlite3
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
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: yard
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.9'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.9'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: talent_scout
|
|
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
|
-
description:
|
|
84
40
|
email:
|
|
85
|
-
- jonathan
|
|
41
|
+
- jonathan@hefner.pro
|
|
86
42
|
executables: []
|
|
87
43
|
extensions: []
|
|
88
44
|
extra_rdoc_files: []
|
|
@@ -99,12 +55,14 @@ files:
|
|
|
99
55
|
- lib/garden_variety/version.rb
|
|
100
56
|
- lib/generators/garden/install/install_generator.rb
|
|
101
57
|
- lib/generators/garden/install/templates/locales/flash.en.yml
|
|
58
|
+
- lib/generators/garden/optimized_generate_action.rb
|
|
102
59
|
- lib/generators/garden/scaffold/scaffold_generator.rb
|
|
103
60
|
homepage: https://github.com/jonathanhefner/garden_variety
|
|
104
61
|
licenses:
|
|
105
62
|
- MIT
|
|
106
|
-
metadata:
|
|
107
|
-
|
|
63
|
+
metadata:
|
|
64
|
+
source_code_uri: https://github.com/jonathanhefner/garden_variety
|
|
65
|
+
changelog_uri: https://github.com/jonathanhefner/garden_variety/blob/master/CHANGELOG.md
|
|
108
66
|
rdoc_options: []
|
|
109
67
|
require_paths:
|
|
110
68
|
- lib
|
|
@@ -112,15 +70,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
112
70
|
requirements:
|
|
113
71
|
- - ">="
|
|
114
72
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: '
|
|
73
|
+
version: '3.4'
|
|
116
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
75
|
requirements:
|
|
118
76
|
- - ">="
|
|
119
77
|
- !ruby/object:Gem::Version
|
|
120
78
|
version: '0'
|
|
121
79
|
requirements: []
|
|
122
|
-
rubygems_version:
|
|
123
|
-
signing_key:
|
|
80
|
+
rubygems_version: 4.0.10
|
|
124
81
|
specification_version: 4
|
|
125
82
|
summary: Delightfully boring Rails controllers
|
|
126
83
|
test_files: []
|