rails_ops 1.1.31 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +0 -14
- data/CHANGELOG.md +14 -0
- data/README.md +94 -17
- data/VERSION +1 -1
- data/lib/rails_ops/configuration.rb +1 -0
- data/lib/rails_ops/controller_mixin.rb +20 -0
- data/rails_ops.gemspec +5 -5
- metadata +3 -5
- data/gemfiles/rails_5.1.gemfile +0 -7
- data/gemfiles/rails_5.2.gemfile +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1a4683567231e4648383f9897b8ad671fe805261f8a6a51840defb0725de4a0
|
4
|
+
data.tar.gz: df628700286e25ff2fad52c24a586f37d9e820bb02348ce9ab49656fb0380b70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bbc2003620797b74c14024d9989b990cf26b79262b76479ff9ad53198c14db08c5e878a6c7fa684fc7817ce6879898a9d21a8508150a7ab3f389cd557f14ec1
|
7
|
+
data.tar.gz: 970f90f2dd1929e652059b5db983e5e81f6f21fa276516619ecccc0af4b99fdaa18bfe5c461446fd1d301133aa905d8a1dbbee287e51feca8288ac611fbc430d
|
data/.github/workflows/ruby.yml
CHANGED
@@ -13,24 +13,10 @@ jobs:
|
|
13
13
|
fail-fast: false
|
14
14
|
matrix:
|
15
15
|
include:
|
16
|
-
- rails-version: '5.1'
|
17
|
-
ruby-version: '2.3.0'
|
18
|
-
- rails-version: '5.1'
|
19
|
-
ruby-version: '2.5.1'
|
20
|
-
- rails-version: '5.2'
|
21
|
-
ruby-version: '2.3.0'
|
22
|
-
- rails-version: '5.2'
|
23
|
-
ruby-version: '2.5.1'
|
24
|
-
- rails-version: '5.2'
|
25
|
-
ruby-version: '2.6.2'
|
26
|
-
- rails-version: '6.0'
|
27
|
-
ruby-version: '2.5.1'
|
28
16
|
- rails-version: '6.0'
|
29
17
|
ruby-version: '2.6.2'
|
30
18
|
- rails-version: '6.0'
|
31
19
|
ruby-version: '2.7.1'
|
32
|
-
- rails-version: '6.1'
|
33
|
-
ruby-version: '2.5.1'
|
34
20
|
- rails-version: '6.1'
|
35
21
|
ruby-version: '2.6.2'
|
36
22
|
- rails-version: '6.1'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.2.0 (2022-08-05)
|
4
|
+
|
5
|
+
* Rescue `Schemacop::Exceptions::ValidationError` in controller mixin and respond with
|
6
|
+
response code `400`. Please see the section *Schema best practices* in the readme for
|
7
|
+
more information.
|
8
|
+
|
9
|
+
* Add config setting `rescue_validation_error_in_controller` to enable/disable the newly
|
10
|
+
added behaviour
|
11
|
+
|
12
|
+
* Update Readme with section about best practices
|
13
|
+
|
14
|
+
* Remove Rails `5.1` and `5.2` from the CI, as well as Ruby `2.5.1` as they were EOL for
|
15
|
+
quite a while now.
|
16
|
+
|
3
17
|
## 1.1.31 (2022-04-19)
|
4
18
|
|
5
19
|
* Deprecate undocumented `virtual_has_one` feature
|
data/README.md
CHANGED
@@ -24,14 +24,10 @@ Requirements & Installation
|
|
24
24
|
### Requirements
|
25
25
|
|
26
26
|
- RailsOps only works with Rails applications, with the following Rails versions being tested in the CI:
|
27
|
-
* Rails 5.1.x
|
28
|
-
* Rails 5.2.x
|
29
27
|
* Rails 6.0.x
|
30
28
|
* Rails 6.1.x
|
31
29
|
* Rails 7.0.x
|
32
30
|
- Additionally, the following Ruby versions are covered by our unit tests:
|
33
|
-
* 2.3.0
|
34
|
-
* 2.5.1
|
35
31
|
* 2.6.2
|
36
32
|
* 2.7.1
|
37
33
|
* 3.0.1
|
@@ -280,7 +276,27 @@ The hash accessed via `params` is a always `Object::HashWithIndifferentAccess`.
|
|
280
276
|
## Validating params
|
281
277
|
|
282
278
|
You're strongly encouraged to perform a validation of the parameters passed to
|
283
|
-
an operation. This can be done in several ways:
|
279
|
+
an operation, as unvalidated params pose a security threat. This can be done in several ways:
|
280
|
+
|
281
|
+
- Using a [schemacop](https://github.com/sitrox/schemacop) schema:
|
282
|
+
|
283
|
+
```ruby
|
284
|
+
class Operations::PrintHelloWorld < RailsOps::Operation
|
285
|
+
schema3 do
|
286
|
+
str! :name
|
287
|
+
end
|
288
|
+
|
289
|
+
def perform
|
290
|
+
puts "Hello #{params[:name]}"
|
291
|
+
end
|
292
|
+
end
|
293
|
+
```
|
294
|
+
|
295
|
+
This is the recommended way of performing basic params validation. Please see the next section *Schema best practices* for more information.
|
296
|
+
|
297
|
+
See documentation of the Gem `schemacop` for more information on how to
|
298
|
+
specify schemata.
|
299
|
+
|
284
300
|
|
285
301
|
- Manually using a *policy* (see chapter *Policies*):
|
286
302
|
|
@@ -298,27 +314,88 @@ an operation. This can be done in several ways:
|
|
298
314
|
end
|
299
315
|
```
|
300
316
|
|
301
|
-
- Using a
|
317
|
+
- Using a business model (see chapter *Model Operations*).
|
302
318
|
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
319
|
+
### Schema best practices
|
320
|
+
|
321
|
+
As previously mentioned, using schema from the `schemacop` gem is the recommended way to validate params passed in to an operation. In general, it's recommended to use version 3 of schemacop, i.e. either use `schema3` to specify the schema, or set the default schema version to 3:
|
322
|
+
|
323
|
+
```ruby
|
324
|
+
# config/initializers/rails_ops.rb
|
325
|
+
RailsOps.configure do |config|
|
326
|
+
config.default_schemacop_version = 3
|
327
|
+
end
|
328
|
+
```
|
329
|
+
|
330
|
+
#### Internal code
|
331
|
+
|
332
|
+
When writing a schema for an operation which is only used internally (e.g. called from another operation, or called from a part of the code where you control the params, e.g. a rake task), it's recommended to specify the types of all items, as this will catch any mismatched data. For example:
|
333
|
+
|
334
|
+
```ruby
|
335
|
+
class Operations::PrintHelloWorldWithId < RailsOps::Operation
|
336
|
+
schema3 do
|
337
|
+
int! :id
|
338
|
+
str! :name
|
307
339
|
end
|
308
340
|
|
309
341
|
def perform
|
310
|
-
puts "Hello #{params[:name]}"
|
342
|
+
puts "Hello #{params[:name]}, your ID is: #{params[:id]}"
|
311
343
|
end
|
312
344
|
end
|
313
|
-
|
345
|
+
```
|
314
346
|
|
315
|
-
|
316
|
-
model validation (see next item).
|
347
|
+
#### Called within controllers
|
317
348
|
|
318
|
-
|
319
|
-
specify schemata.
|
349
|
+
On the other hand, operations which are called within controllers (e.g. to encapsulate an update operation of a model) should not assume any types, and instead use model validations (if applicable) to validate the correctness of the data. In this case, the schema should only be used to filter the params. As such, it's recommended to use `obj` to specify params which are not strings, as this will allow anything (but only the specified values). An example would be:
|
320
350
|
|
321
|
-
|
351
|
+
```ruby
|
352
|
+
module Operations::User
|
353
|
+
class Update < RailsOps::Operation::Model::Update
|
354
|
+
schema3 do
|
355
|
+
int! :id
|
356
|
+
hsh? :user do
|
357
|
+
obj! :age
|
358
|
+
str! :first_name
|
359
|
+
obj! :is_active
|
360
|
+
end
|
361
|
+
end
|
362
|
+
end
|
363
|
+
end
|
364
|
+
```
|
365
|
+
|
366
|
+
Validating that `age` is an integer and `is_active` then should be done with a validation in the `User` model, as this will also populate the model errors, which in turn will display the error in the form. If you were to validate the type of the data here, it would raise a `Schemacop::Exceptions::ValidationError` exception, which you would need to handle seperately.
|
367
|
+
|
368
|
+
Finally, when additional, obsolete params are supplied, the schema validation would also fail. To have a similar behavious to the strong params from Rails, which drop non-whitelisted params without raising an exception, you can use the `ignore_obsolete_properties` option. This will simply ignore and drop any params which are not explicitly whitelisted:
|
369
|
+
|
370
|
+
```ruby
|
371
|
+
module Operations::User
|
372
|
+
class Update < RailsOps::Operation::Model::Update
|
373
|
+
schema3 ignore_obsolete_properties: true do
|
374
|
+
int! :id
|
375
|
+
hsh? :user do
|
376
|
+
obj! :age
|
377
|
+
str! :first_name
|
378
|
+
obj! :is_active
|
379
|
+
end
|
380
|
+
end
|
381
|
+
end
|
382
|
+
end
|
383
|
+
```
|
384
|
+
|
385
|
+
### Catching schema validation errors
|
386
|
+
|
387
|
+
When an operation is called from a controller (via the `run` or `run!` method) and a schema validation excaption occurs, the controller will respond with an empty body and a status code `400` (bad request). This behaviour is enabled by default, but can be disabled with the `rescue_validation_error_in_controller` config option:
|
388
|
+
|
389
|
+
```ruby
|
390
|
+
# config/initializers/rails_ops.rb
|
391
|
+
RailsOps.configure do |config|
|
392
|
+
config.rescue_validation_error_in_controller = false
|
393
|
+
end
|
394
|
+
```
|
395
|
+
|
396
|
+
Generally, this should be left enabled, as sending invalid data to the controller should not result in an internal server error, but rather in a "client error".
|
397
|
+
|
398
|
+
Please note that this behaviour is disabled in development mode, as the full exception messages are useful for debugging purposes.
|
322
399
|
|
323
400
|
Policies
|
324
401
|
--------
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
@@ -4,4 +4,5 @@ class RailsOps::Configuration < ActiveType::Object
|
|
4
4
|
attribute :trigger_hookups_without_authorization, :boolean, default: false
|
5
5
|
attribute :ensure_authorize_called, :boolean, default: true
|
6
6
|
attribute :default_schemacop_version, :integer, default: 2
|
7
|
+
attribute :rescue_validation_error_in_controller, :boolean, default: true
|
7
8
|
end
|
@@ -34,6 +34,26 @@ module RailsOps
|
|
34
34
|
else
|
35
35
|
fail 'This rails version does not support :after_action or :after_filter callbacks.'
|
36
36
|
end
|
37
|
+
|
38
|
+
# If enabled, we rescue all validation errors happening in a controller (i.e. a normal
|
39
|
+
# request) by responding with a status of 400 (bad request) for XHR requests, and by
|
40
|
+
# raising an ActionController::BadRequest exception otherwise. This exception then
|
41
|
+
# should be handled by the application server, usually by serving the 400 error page.
|
42
|
+
# This can be turned off, but should generally be left enabled, as sending invalid data
|
43
|
+
# should result in a "client error", not an "server error".
|
44
|
+
# This generally should be combined with enabling the option "ignore_obsolete_properties"
|
45
|
+
# of schemacop.
|
46
|
+
# Please note that this is disabled in the production environment, as the full exception messages
|
47
|
+
# are useful for debugging.
|
48
|
+
if RailsOps.config.rescue_validation_error_in_controller && !Rails.env.development?
|
49
|
+
rescue_from Schemacop::Exceptions::ValidationError do |_e|
|
50
|
+
if request.xhr?
|
51
|
+
head :bad_request
|
52
|
+
else
|
53
|
+
fail ActionController::BadRequest
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
37
57
|
end
|
38
58
|
|
39
59
|
# Instantiates and returns a new operation with the given class. If no class
|
data/rails_ops.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: rails_ops 1.
|
2
|
+
# stub: rails_ops 1.2.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "rails_ops".freeze
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.2.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Sitrox".freeze]
|
11
|
-
s.date = "2022-
|
12
|
-
s.files = [".github/workflows/rubocop.yml".freeze, ".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, "Appraisals".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "gemfiles/
|
13
|
-
s.rubygems_version = "3.
|
11
|
+
s.date = "2022-08-05"
|
12
|
+
s.files = [".github/workflows/rubocop.yml".freeze, ".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".releaser_config".freeze, ".rubocop.yml".freeze, "Appraisals".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "gemfiles/rails_6.0.gemfile".freeze, "gemfiles/rails_6.1.gemfile".freeze, "gemfiles/rails_7.0.gemfile".freeze, "lib/generators/operation/USAGE".freeze, "lib/generators/operation/operation_generator.rb".freeze, "lib/generators/operation/templates/controller.erb".freeze, "lib/generators/operation/templates/create.erb".freeze, "lib/generators/operation/templates/destroy.erb".freeze, "lib/generators/operation/templates/load.erb".freeze, "lib/generators/operation/templates/update.erb".freeze, "lib/generators/operation/templates/view.erb".freeze, "lib/rails_ops.rb".freeze, "lib/rails_ops/authorization_backend/abstract.rb".freeze, "lib/rails_ops/authorization_backend/can_can_can.rb".freeze, "lib/rails_ops/configuration.rb".freeze, "lib/rails_ops/context.rb".freeze, "lib/rails_ops/controller_mixin.rb".freeze, "lib/rails_ops/exceptions.rb".freeze, "lib/rails_ops/hooked_job.rb".freeze, "lib/rails_ops/hookup.rb".freeze, "lib/rails_ops/hookup/dsl.rb".freeze, "lib/rails_ops/hookup/dsl_validator.rb".freeze, "lib/rails_ops/hookup/hook.rb".freeze, "lib/rails_ops/log_subscriber.rb".freeze, "lib/rails_ops/mixins.rb".freeze, "lib/rails_ops/mixins/authorization.rb".freeze, "lib/rails_ops/mixins/log_settings.rb".freeze, "lib/rails_ops/mixins/model.rb".freeze, "lib/rails_ops/mixins/model/authorization.rb".freeze, "lib/rails_ops/mixins/model/nesting.rb".freeze, "lib/rails_ops/mixins/param_authorization.rb".freeze, "lib/rails_ops/mixins/policies.rb".freeze, "lib/rails_ops/mixins/require_context.rb".freeze, "lib/rails_ops/mixins/routes.rb".freeze, "lib/rails_ops/mixins/schema_validation.rb".freeze, "lib/rails_ops/mixins/sub_ops.rb".freeze, "lib/rails_ops/model_mixins.rb".freeze, "lib/rails_ops/model_mixins/ar_extension.rb".freeze, "lib/rails_ops/model_mixins/parent_op.rb".freeze, "lib/rails_ops/model_mixins/sti_fixes.rb".freeze, "lib/rails_ops/model_mixins/virtual_attributes.rb".freeze, "lib/rails_ops/model_mixins/virtual_attributes/virtual_column_wrapper.rb".freeze, "lib/rails_ops/model_mixins/virtual_has_one.rb".freeze, "lib/rails_ops/model_mixins/virtual_model_name.rb".freeze, "lib/rails_ops/operation.rb".freeze, "lib/rails_ops/operation/model.rb".freeze, "lib/rails_ops/operation/model/create.rb".freeze, "lib/rails_ops/operation/model/destroy.rb".freeze, "lib/rails_ops/operation/model/load.rb".freeze, "lib/rails_ops/operation/model/update.rb".freeze, "lib/rails_ops/profiler.rb".freeze, "lib/rails_ops/profiler/node.rb".freeze, "lib/rails_ops/railtie.rb".freeze, "lib/rails_ops/scoped_env.rb".freeze, "lib/rails_ops/virtual_model.rb".freeze, "rails_ops.gemspec".freeze, "test/db/models.rb".freeze, "test/db/schema.rb".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/assets/config/manifest.js".freeze, "test/dummy/app/assets/images/.keep".freeze, "test/dummy/app/assets/javascripts/application.js".freeze, "test/dummy/app/assets/javascripts/cable.js".freeze, "test/dummy/app/assets/javascripts/channels/.keep".freeze, "test/dummy/app/assets/stylesheets/application.css".freeze, "test/dummy/app/channels/application_cable/channel.rb".freeze, "test/dummy/app/channels/application_cable/connection.rb".freeze, "test/dummy/app/controllers/application_controller.rb".freeze, "test/dummy/app/controllers/concerns/.keep".freeze, "test/dummy/app/helpers/application_helper.rb".freeze, "test/dummy/app/jobs/application_job.rb".freeze, "test/dummy/app/mailers/application_mailer.rb".freeze, "test/dummy/app/models/animal.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/bird.rb".freeze, "test/dummy/app/models/cat.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/dog.rb".freeze, "test/dummy/app/models/flower.rb".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/models/nightingale.rb".freeze, "test/dummy/app/models/phoenix.rb".freeze, "test/dummy/app/models/user.rb".freeze, "test/dummy/app/views/layouts/application.html.erb".freeze, "test/dummy/app/views/layouts/mailer.html.erb".freeze, "test/dummy/app/views/layouts/mailer.text.erb".freeze, "test/dummy/bin/bundle".freeze, "test/dummy/bin/rails".freeze, "test/dummy/bin/rake".freeze, "test/dummy/bin/setup".freeze, "test/dummy/bin/update".freeze, "test/dummy/bin/yarn".freeze, "test/dummy/config.ru".freeze, "test/dummy/config/application.rb".freeze, "test/dummy/config/boot.rb".freeze, "test/dummy/config/cable.yml".freeze, "test/dummy/config/database.yml".freeze, "test/dummy/config/environment.rb".freeze, "test/dummy/config/environments/development.rb".freeze, "test/dummy/config/environments/production.rb".freeze, "test/dummy/config/environments/test.rb".freeze, "test/dummy/config/initializers/application_controller_renderer.rb".freeze, "test/dummy/config/initializers/assets.rb".freeze, "test/dummy/config/initializers/backtrace_silencers.rb".freeze, "test/dummy/config/initializers/cookies_serializer.rb".freeze, "test/dummy/config/initializers/filter_parameter_logging.rb".freeze, "test/dummy/config/initializers/inflections.rb".freeze, "test/dummy/config/initializers/mime_types.rb".freeze, "test/dummy/config/initializers/rails_ops.rb".freeze, "test/dummy/config/initializers/wrap_parameters.rb".freeze, "test/dummy/config/locales/en.yml".freeze, "test/dummy/config/puma.rb".freeze, "test/dummy/config/routes.rb".freeze, "test/dummy/config/secrets.yml".freeze, "test/dummy/config/spring.rb".freeze, "test/dummy/db/schema.rb".freeze, "test/dummy/lib/assets/.keep".freeze, "test/dummy/log/.keep".freeze, "test/dummy/package.json".freeze, "test/dummy/public/404.html".freeze, "test/dummy/public/422.html".freeze, "test/dummy/public/500.html".freeze, "test/dummy/public/apple-touch-icon-precomposed.png".freeze, "test/dummy/public/apple-touch-icon.png".freeze, "test/dummy/public/favicon.ico".freeze, "test/dummy/tmp/.keep".freeze, "test/test_helper.rb".freeze, "test/unit/rails_ops/generators/operation_generator_test.rb".freeze, "test/unit/rails_ops/mixins/model/nesting.rb".freeze, "test/unit/rails_ops/mixins/policies_test.rb".freeze, "test/unit/rails_ops/operation/model/create_test.rb".freeze, "test/unit/rails_ops/operation/model/load_test.rb".freeze, "test/unit/rails_ops/operation/model/sti_test.rb".freeze, "test/unit/rails_ops/operation/model/update_test.rb".freeze, "test/unit/rails_ops/operation/model_test.rb".freeze, "test/unit/rails_ops/operation/update_auth_test.rb".freeze, "test/unit/rails_ops/operation/update_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
|
13
|
+
s.rubygems_version = "3.2.15".freeze
|
14
14
|
s.summary = "An operations service layer for rails projects.".freeze
|
15
15
|
s.test_files = ["test/db/models.rb".freeze, "test/db/schema.rb".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/assets/config/manifest.js".freeze, "test/dummy/app/assets/images/.keep".freeze, "test/dummy/app/assets/javascripts/application.js".freeze, "test/dummy/app/assets/javascripts/cable.js".freeze, "test/dummy/app/assets/javascripts/channels/.keep".freeze, "test/dummy/app/assets/stylesheets/application.css".freeze, "test/dummy/app/channels/application_cable/channel.rb".freeze, "test/dummy/app/channels/application_cable/connection.rb".freeze, "test/dummy/app/controllers/application_controller.rb".freeze, "test/dummy/app/controllers/concerns/.keep".freeze, "test/dummy/app/helpers/application_helper.rb".freeze, "test/dummy/app/jobs/application_job.rb".freeze, "test/dummy/app/mailers/application_mailer.rb".freeze, "test/dummy/app/models/animal.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/bird.rb".freeze, "test/dummy/app/models/cat.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/dog.rb".freeze, "test/dummy/app/models/flower.rb".freeze, "test/dummy/app/models/group.rb".freeze, "test/dummy/app/models/nightingale.rb".freeze, "test/dummy/app/models/phoenix.rb".freeze, "test/dummy/app/models/user.rb".freeze, "test/dummy/app/views/layouts/application.html.erb".freeze, "test/dummy/app/views/layouts/mailer.html.erb".freeze, "test/dummy/app/views/layouts/mailer.text.erb".freeze, "test/dummy/bin/bundle".freeze, "test/dummy/bin/rails".freeze, "test/dummy/bin/rake".freeze, "test/dummy/bin/setup".freeze, "test/dummy/bin/update".freeze, "test/dummy/bin/yarn".freeze, "test/dummy/config.ru".freeze, "test/dummy/config/application.rb".freeze, "test/dummy/config/boot.rb".freeze, "test/dummy/config/cable.yml".freeze, "test/dummy/config/database.yml".freeze, "test/dummy/config/environment.rb".freeze, "test/dummy/config/environments/development.rb".freeze, "test/dummy/config/environments/production.rb".freeze, "test/dummy/config/environments/test.rb".freeze, "test/dummy/config/initializers/application_controller_renderer.rb".freeze, "test/dummy/config/initializers/assets.rb".freeze, "test/dummy/config/initializers/backtrace_silencers.rb".freeze, "test/dummy/config/initializers/cookies_serializer.rb".freeze, "test/dummy/config/initializers/filter_parameter_logging.rb".freeze, "test/dummy/config/initializers/inflections.rb".freeze, "test/dummy/config/initializers/mime_types.rb".freeze, "test/dummy/config/initializers/rails_ops.rb".freeze, "test/dummy/config/initializers/wrap_parameters.rb".freeze, "test/dummy/config/locales/en.yml".freeze, "test/dummy/config/puma.rb".freeze, "test/dummy/config/routes.rb".freeze, "test/dummy/config/secrets.yml".freeze, "test/dummy/config/spring.rb".freeze, "test/dummy/db/schema.rb".freeze, "test/dummy/lib/assets/.keep".freeze, "test/dummy/log/.keep".freeze, "test/dummy/package.json".freeze, "test/dummy/public/404.html".freeze, "test/dummy/public/422.html".freeze, "test/dummy/public/500.html".freeze, "test/dummy/public/apple-touch-icon-precomposed.png".freeze, "test/dummy/public/apple-touch-icon.png".freeze, "test/dummy/public/favicon.ico".freeze, "test/dummy/tmp/.keep".freeze, "test/test_helper.rb".freeze, "test/unit/rails_ops/generators/operation_generator_test.rb".freeze, "test/unit/rails_ops/mixins/model/nesting.rb".freeze, "test/unit/rails_ops/mixins/policies_test.rb".freeze, "test/unit/rails_ops/operation/model/create_test.rb".freeze, "test/unit/rails_ops/operation/model/load_test.rb".freeze, "test/unit/rails_ops/operation/model/sti_test.rb".freeze, "test/unit/rails_ops/operation/model/update_test.rb".freeze, "test/unit/rails_ops/operation/model_test.rb".freeze, "test/unit/rails_ops/operation/update_auth_test.rb".freeze, "test/unit/rails_ops/operation/update_lazy_auth_test.rb".freeze, "test/unit/rails_ops/operation_test.rb".freeze]
|
16
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_ops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sitrox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appraisal
|
@@ -230,8 +230,6 @@ files:
|
|
230
230
|
- README.md
|
231
231
|
- Rakefile
|
232
232
|
- VERSION
|
233
|
-
- gemfiles/rails_5.1.gemfile
|
234
|
-
- gemfiles/rails_5.2.gemfile
|
235
233
|
- gemfiles/rails_6.0.gemfile
|
236
234
|
- gemfiles/rails_6.1.gemfile
|
237
235
|
- gemfiles/rails_7.0.gemfile
|
@@ -388,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
388
386
|
- !ruby/object:Gem::Version
|
389
387
|
version: '0'
|
390
388
|
requirements: []
|
391
|
-
rubygems_version: 3.
|
389
|
+
rubygems_version: 3.2.15
|
392
390
|
signing_key:
|
393
391
|
specification_version: 4
|
394
392
|
summary: An operations service layer for rails projects.
|
data/gemfiles/rails_5.1.gemfile
DELETED