rails_ops 1.1.27 → 1.1.30

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bcce101893137c4a67443fb2f0c056695a9f31d9eddd4d8db480e2e27abb004
4
- data.tar.gz: 360264275974a50bf59bde14c29ea5a10192d35bc7c983829a190b56aa4bc853
3
+ metadata.gz: 754dad89cfd6d45d03e385e2a09c9d93f777674972ccda2537f2d9d63cef9dfe
4
+ data.tar.gz: 1918e0036f28565a6f599be1683000fed1419a59fe9b93dc4b303fa697fe5bf6
5
5
  SHA512:
6
- metadata.gz: a3334b17bf543eb8168f13388a822e3572c9a6bb4522cc8db8d27755ffda18cccaba4a7283efc21e8d4da3bd5c5e2ab64d7eef2c5ad7478aef57b432dd23f06d
7
- data.tar.gz: 87e7d4cc99de70f5287f1c639b9607dfac59a8fcf492225fbc3956f49f2f7f372724eb153dd9016cc2927d9e5116a0522531e681fcd577314118ecda484f7393
6
+ metadata.gz: d9d3ba1f6339d35cd920edc8f5b471bffadb86fe0027640d64ba0eb0bacff2a5bb8c57cf7e28a6ca932c6764cc281bbad716178d51a9af37c63b190602b339e0
7
+ data.tar.gz: 1a35691ccbd00badbc9d85e31a5e5614e44ba72a40a0d49a6caa56a27f956594659d0612a340a43224be49e5779303111fa2c80d6654f328d3f28fbbfeb38c13
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.30 (2022-02-18)
4
+
5
+ * [PR#27](https://github.com/sitrox/rails_ops/pull/27): Update id schemata in templates
6
+
7
+ ## 1.1.29 (2022-02-17)
8
+
9
+ * Fix sti type not correct on creating of record
10
+
11
+ ## 1.1.28 (2022-02-16)
12
+
13
+ * [#22](https://github.com/sitrox/rails_ops/issues/22): Fix error with active_type `>= 2`
14
+
3
15
  ## 1.1.27 (2022-02-15)
4
16
 
5
17
  * Add `module` option to `operation` generator
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.27
1
+ 1.1.30
@@ -5,7 +5,7 @@ module Operations::<%= @class_name %>
5
5
  <% end -%>
6
6
  class Destroy < RailsOps::Operation::Model::Destroy
7
7
  schema3 do
8
- str! :id
8
+ int! :id, cast_str: true
9
9
  end
10
10
 
11
11
  model ::<%= @class_name %>
@@ -5,7 +5,7 @@ module Operations::<%= @class_name %>
5
5
  <% end -%>
6
6
  class Load < RailsOps::Operation::Model::Load
7
7
  schema3 do
8
- str! :id
8
+ int! :id, cast_str: true
9
9
  end
10
10
 
11
11
  model ::<%= @class_name %>
@@ -5,7 +5,7 @@ module Operations::<%= @class_name %>
5
5
  <% end -%>
6
6
  class Update < RailsOps::Operation::Model::Update
7
7
  schema3 do
8
- str! :id
8
+ int! :id, cast_str: true
9
9
  hsh? :<%= @underscored_name %> do
10
10
 
11
11
  end
@@ -70,8 +70,6 @@ module RailsOps::Mixins::Model::Authorization
70
70
  # Cast {ActiveType::Record} classes or instances to regular AR models in order
71
71
  # for cancan(can) to work properly. Classes and instances that are no active
72
72
  # type records will be returned as-is.
73
- #
74
- # TODO: Use ModelCasting module instead?
75
73
  def cast_model_for_authorization(model_class_or_instance)
76
74
  if model_class_or_instance.is_a?(Class)
77
75
  if model_class_or_instance.respond_to?(:extended_record_base_class)
@@ -80,7 +78,7 @@ module RailsOps::Mixins::Model::Authorization
80
78
  return model_class_or_instance
81
79
  end
82
80
  elsif model_class_or_instance.class.respond_to?(:extended_record_base_class)
83
- return ActiveType.cast(model_class_or_instance, model_class_or_instance.class.extended_record_base_class)
81
+ model_class_or_instance.becomes(model_class_or_instance.class.extended_record_base_class)
84
82
  else
85
83
  model_class_or_instance
86
84
  end
@@ -134,6 +134,11 @@ class RailsOps::Operation::Model < RailsOps::Operation
134
134
  attributes = attributes.except(*self.class.nested_model_param_keys)
135
135
  end
136
136
 
137
+ # Assign the "type" attribute if we need it
138
+ if _model_class.superclass.finder_needs_type_condition?
139
+ attributes[_model_class.inheritance_column] ||= _model_class.superclass.name
140
+ end
141
+
137
142
  # Do nothing if there are no attributes to assign
138
143
  return if attributes.nil? || attributes.empty?
139
144
 
data/lib/rails_ops.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'active_type'
1
2
  require 'schemacop'
2
3
  require 'request_store'
3
4
 
@@ -46,18 +47,6 @@ module RailsOps
46
47
  end
47
48
  end
48
49
 
49
- # ---------------------------------------------------------------
50
- # Require Gem active_type and monkey patch
51
- # ---------------------------------------------------------------
52
- require 'active_type'
53
- require 'active_type/type_caster'
54
- require 'rails_ops/patches/active_type_patch'
55
-
56
- # ---------------------------------------------------------------
57
- # Require Schemacop
58
- # ---------------------------------------------------------------
59
- require 'schemacop'
60
-
61
50
  # ---------------------------------------------------------------
62
51
  # Require RailsOps
63
52
  # ---------------------------------------------------------------
@@ -84,7 +73,6 @@ require 'rails_ops/mixins/require_context.rb'
84
73
  require 'rails_ops/mixins/routes.rb'
85
74
  require 'rails_ops/mixins/schema_validation.rb'
86
75
  require 'rails_ops/mixins/sub_ops.rb'
87
- require 'rails_ops/model_casting.rb'
88
76
  require 'rails_ops/model_mixins.rb'
89
77
  require 'rails_ops/model_mixins/ar_extension.rb'
90
78
  require 'rails_ops/model_mixins/parent_op.rb'
data/rails_ops.gemspec CHANGED
@@ -1,16 +1,16 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: rails_ops 1.1.27 ruby lib
2
+ # stub: rails_ops 1.1.30 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "rails_ops".freeze
6
- s.version = "1.1.27"
6
+ s.version = "1.1.30"
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-02-15"
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_5.1.gemfile".freeze, "gemfiles/rails_5.2.gemfile".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_casting.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/patches/active_type_patch.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
11
+ s.date = "2022-02-24"
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_5.1.gemfile".freeze, "gemfiles/rails_5.2.gemfile".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.22".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
 
@@ -34,6 +34,30 @@ class RailsOps::Operation::Model::StiTest < ActiveSupport::TestCase
34
34
  end
35
35
  end
36
36
 
37
+ UPDATE_DOG_OP = Class.new(RailsOps::Operation::Model::Update) do
38
+ model Dog do
39
+ attribute :my_virtual_dog_name
40
+ end
41
+ end
42
+
43
+ CREATE_DOG_OP = Class.new(RailsOps::Operation::Model::Create) do
44
+ model Dog do
45
+ attribute :my_virtual_dog_name
46
+ end
47
+ end
48
+
49
+ UPDATE_PHOENIX_OP = Class.new(RailsOps::Operation::Model::Update) do
50
+ model Phoenix do
51
+ attribute :my_virtual_phoenix_name
52
+ end
53
+ end
54
+
55
+ CREATE_PHOENIX_OP = Class.new(RailsOps::Operation::Model::Create) do
56
+ model Phoenix do
57
+ attribute :my_virtual_phoenix_name
58
+ end
59
+ end
60
+
37
61
  def test_load_animal
38
62
  model = LOAD_ANIMAL_OP.new(id: @dog.id).model
39
63
  assert_equal 'Dog', model.type
@@ -67,4 +91,36 @@ class RailsOps::Operation::Model::StiTest < ActiveSupport::TestCase
67
91
  assert model.is_a?(LOAD_PHOENIX_OP.model)
68
92
  assert_nothing_raised { model.my_virtual_phoenix_name = 'Lenny' }
69
93
  end
94
+
95
+ def test_create_dog
96
+ op = CREATE_DOG_OP.new.run!
97
+
98
+ assert_equal 'Dog', op.model.type
99
+ assert op.model.is_a?(CREATE_DOG_OP.model)
100
+ assert_nothing_raised { op.model.my_virtual_dog_name = 'Lenny' }
101
+ end
102
+
103
+ def test_update_dog
104
+ op = UPDATE_DOG_OP.new(id: @dog.id).run!
105
+
106
+ assert_equal 'Dog', op.model.type
107
+ assert op.model.is_a?(UPDATE_DOG_OP.model)
108
+ assert_nothing_raised { op.model.my_virtual_dog_name = 'Lenny' }
109
+ end
110
+
111
+ def test_create_phoenix
112
+ op = CREATE_PHOENIX_OP.new.run!
113
+
114
+ assert_equal 'Phoenix', op.model.type
115
+ assert op.model.is_a?(CREATE_PHOENIX_OP.model)
116
+ assert_nothing_raised { op.model.my_virtual_phoenix_name = 'Lenny' }
117
+ end
118
+
119
+ def test_update_phoenix
120
+ op = UPDATE_PHOENIX_OP.new(id: @phoenix.id).run!
121
+
122
+ assert_equal 'Phoenix', op.model.type
123
+ assert op.model.is_a?(UPDATE_PHOENIX_OP.model)
124
+ assert_nothing_raised { op.model.my_virtual_phoenix_name = 'Lenny' }
125
+ end
70
126
  end
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.1.27
4
+ version: 1.1.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sitrox
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-15 00:00:00.000000000 Z
11
+ date: 2022-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appraisal
@@ -212,8 +212,8 @@ dependencies:
212
212
  - - "<="
213
213
  - !ruby/object:Gem::Version
214
214
  version: '3.1'
215
- description:
216
- email:
215
+ description:
216
+ email:
217
217
  executables: []
218
218
  extensions: []
219
219
  extra_rdoc_files: []
@@ -268,7 +268,6 @@ files:
268
268
  - lib/rails_ops/mixins/routes.rb
269
269
  - lib/rails_ops/mixins/schema_validation.rb
270
270
  - lib/rails_ops/mixins/sub_ops.rb
271
- - lib/rails_ops/model_casting.rb
272
271
  - lib/rails_ops/model_mixins.rb
273
272
  - lib/rails_ops/model_mixins/ar_extension.rb
274
273
  - lib/rails_ops/model_mixins/parent_op.rb
@@ -283,7 +282,6 @@ files:
283
282
  - lib/rails_ops/operation/model/destroy.rb
284
283
  - lib/rails_ops/operation/model/load.rb
285
284
  - lib/rails_ops/operation/model/update.rb
286
- - lib/rails_ops/patches/active_type_patch.rb
287
285
  - lib/rails_ops/profiler.rb
288
286
  - lib/rails_ops/profiler/node.rb
289
287
  - lib/rails_ops/railtie.rb
@@ -372,10 +370,10 @@ files:
372
370
  - test/unit/rails_ops/operation/update_auth_test.rb
373
371
  - test/unit/rails_ops/operation/update_lazy_auth_test.rb
374
372
  - test/unit/rails_ops/operation_test.rb
375
- homepage:
373
+ homepage:
376
374
  licenses: []
377
375
  metadata: {}
378
- post_install_message:
376
+ post_install_message:
379
377
  rdoc_options: []
380
378
  require_paths:
381
379
  - lib
@@ -390,8 +388,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
390
388
  - !ruby/object:Gem::Version
391
389
  version: '0'
392
390
  requirements: []
393
- rubygems_version: 3.2.15
394
- signing_key:
391
+ rubygems_version: 3.2.22
392
+ signing_key:
395
393
  specification_version: 4
396
394
  summary: An operations service layer for rails projects.
397
395
  test_files:
@@ -1,17 +0,0 @@
1
- module RailsOps::ModelCasting
2
- def self.cast(model)
3
- if model.class.respond_to?(:extended_record_base_class)
4
- return ActiveType.cast(model, model.class.extended_record_base_class)
5
- else
6
- return model
7
- end
8
- end
9
-
10
- def self.original_class_for(model_class)
11
- if model_class.respond_to?(:extended_record_base_class)
12
- return model_class.extended_record_base_class
13
- else
14
- return model_class
15
- end
16
- end
17
- end
@@ -1,52 +0,0 @@
1
- # Internal reference: #25564
2
- module ActiveType
3
- class TypeCaster
4
- def type_cast_from_user(value)
5
- # For some reason, Rails defines additional type casting logic
6
- # outside the classes that have that responsibility.
7
- case @type
8
- when :integer
9
- if value == ''
10
- nil
11
- else
12
- native_type_cast_from_user(value)
13
- end
14
- when :timestamp, :datetime
15
- time = native_type_cast_from_user(value)
16
- if time && ActiveRecord::Base.time_zone_aware_attributes
17
- time = ActiveSupport::TimeWithZone.new(nil, Time.zone, time)
18
- end
19
- time
20
- when Integer.class
21
- if value == ''
22
- nil
23
- else
24
- value.to_i
25
- end
26
- else
27
- native_type_cast_from_user(value)
28
- end
29
- end
30
-
31
- module NativeCasters
32
- class DelegateToType
33
- def initialize(type, connection)
34
- # The specified type (e.g. "string") may not necessary match the
35
- # native type ("varchar") expected by the connection adapter.
36
- # PostgreSQL is one of these. Perform a translation if the adapter
37
- # supports it (but don't turn a mysql boolean into a tinyint).
38
- if !type.nil? && !(type == :boolean) && type.respond_to?(:to_sym) && connection.respond_to?(:native_database_types)
39
- native_type = connection.native_database_types[type.try(:to_sym)]
40
- if native_type && native_type[:name]
41
- type = native_type[:name]
42
- else
43
- # unknown type, we just dont cast
44
- type = nil
45
- end
46
- end
47
- @active_record_type = connection.lookup_cast_type(type)
48
- end
49
- end
50
- end
51
- end
52
- end