eac_rails_utils 0.13.1 → 0.13.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88a56887267261f2552a66ec8d52a9198be27aedc0dcf17929cd9b37800d90a5
4
- data.tar.gz: 8dfae899c7cbde6ea7935e482f1568154ef4d14f7a312740bb71f69bd8f2a20d
3
+ metadata.gz: b1529b1bebaa871484fb124ed0a9fc52a8bed38eb14419a61b4423392a33a60e
4
+ data.tar.gz: ca06e07efcce2b7bd6689383a6daa2e2db6a299d20b6ab3aa73cdc8fbad5c364
5
5
  SHA512:
6
- metadata.gz: c6eafd597cae6299dfcc6b3da6d13cd67ae2c596c275d68c5820464203d6a4828e9d66f85a22a644c52fc272324b5ae95925e3d3cde73fdc1fe99e11ca1e7e80
7
- data.tar.gz: 9c413abc77ce04328afef5ad36fae4e45d2f07de827fff960f32942ece93a8e224fa4209ecf8eb4b133d92a287d559c014279d5c7b184dd81a1c59a49ac3928c
6
+ metadata.gz: 6edd15a5b430f16fe7459e8d0a7aa445440b0349f3af6c6f045d8a555d8870519a2b008976d93806276b729227cf967079387eee1864a1903fc5465a3934edb6
7
+ data.tar.gz: ac974c20369e17f6dfbe37b8ca1d6f3ddabe3b56494302cfc88beee67d4fa9cdb62faa9eed95d9adc1b680ac9c3d7d9e0379c44056bc9ea2dab76c6e07815a0a
@@ -1,38 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_model/associations/hooks'
4
3
  require 'activemodel/associations'
5
-
6
- module EacRailsUtils
7
- module Patches
8
- module ActiveModelAssociations
9
- module ScopeExtensionPatch
10
- def add_constraints(scope, owner, association_klass, *extra_args)
11
- if extra_args.any?
12
- refl = extra_args.first
13
- if refl.options[:active_model]
14
- target_ids = refl.options[:target_ids]
15
- return scope.where(id: owner[target_ids])
16
- end
17
- end
18
-
19
- super
20
- end
21
- end
22
- end
23
- end
24
- end
4
+ require 'eac_rails_utils/patches/rails_4'
5
+ require 'eac_rails_utils/patches/rails_5_2'
25
6
 
26
7
  module ActiveModel
27
8
  module Associations
28
9
  module Hooks
29
- def self.init
30
- return unless ::Rails.version < '5'
10
+ class << self
11
+ def init
12
+ init_rails_4 if ::EacRailsUtils::Patches::Rails4.enabled?
13
+ init_rails_5_2 if ::EacRailsUtils::Patches::Rails52.enabled?
14
+ end
15
+
16
+ def init_rails_4
17
+ ActiveSupport.on_load(:active_record) do
18
+ ActiveRecord::Associations::AssociationScope.prepend(
19
+ ::EacRailsUtils::Patches::Rails4::ActiveRecordAssociationsAssociationScope
20
+ )
21
+ end
22
+ end
31
23
 
32
- ActiveSupport.on_load(:active_record) do
33
- ActiveRecord::Associations::AssociationScope.prepend(
34
- ::EacRailsUtils::Patches::ActiveModelAssociations::ScopeExtensionPatch
35
- )
24
+ def init_rails_5_2
25
+ rails_5_2_fix_activemodel_associations_methods
26
+ end
27
+
28
+ def rails_5_2_fix_activemodel_associations_methods
29
+ %i[belongs_to has_many].each do |method|
30
+ ::EacRailsUtils::Patches::Rails52::ActiveModelAssociationMethodFix.new(method)
31
+ end
36
32
  end
37
33
  end
38
34
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'activemodel/associations'
4
+
5
+ module EacRailsUtils
6
+ module Patches
7
+ module Rails4
8
+ module ActiveRecordAssociationsAssociationScope
9
+ def add_constraints(scope, owner, association_klass, *extra_args)
10
+ if extra_args.any?
11
+ refl = extra_args.first
12
+ if refl.options[:active_model]
13
+ target_ids = refl.options[:target_ids]
14
+ return scope.where(id: owner[target_ids])
15
+ end
16
+ end
17
+
18
+ super
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_model/associations/hooks'
4
+ require 'eac_ruby_utils/require_sub'
5
+
6
+ module EacRailsUtils
7
+ module Patches
8
+ module Rails4
9
+ ::EacRubyUtils.require_sub __FILE__
10
+
11
+ class << self
12
+ def enabled?
13
+ ::Rails.version < '5'
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'activemodel/associations'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module EacRailsUtils
7
+ module Patches
8
+ module Rails52
9
+ class ActiveModelAssociationMethodFix
10
+ common_constructor :method_name do
11
+ perform
12
+ end
13
+
14
+ def original_method_new_name
15
+ "original_#{method_name}".to_sym
16
+ end
17
+
18
+ private
19
+
20
+ def the_module
21
+ ::ActiveModel::Associations::ClassMethods
22
+ end
23
+
24
+ def perform
25
+ patch = self
26
+ the_module.class_eval do
27
+ alias_method patch.original_method_new_name, patch.method_name
28
+ remove_method patch.method_name
29
+
30
+ define_method patch.method_name do |name, scope = nil, **options, &extension|
31
+ send(patch.original_method_new_name, name, scope, options, &extension)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_model/associations/hooks'
4
+ require 'eac_ruby_utils/require_sub'
5
+
6
+ module EacRailsUtils
7
+ module Patches
8
+ module Rails52
9
+ ::EacRubyUtils.require_sub __FILE__
10
+
11
+ class << self
12
+ def enabled?
13
+ ::Rails.version >= '5.2'
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRailsUtils
4
- VERSION = '0.13.1'
4
+ VERSION = '0.13.5'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_rails_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - E.A.C.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-08 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel-associations
@@ -120,14 +120,14 @@ dependencies:
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0.1'
123
+ version: '0.4'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0.1'
130
+ version: '0.4'
131
131
  description:
132
132
  email:
133
133
  executables: []
@@ -195,6 +195,10 @@ files:
195
195
  - lib/eac_rails_utils/patches.rb
196
196
  - lib/eac_rails_utils/patches/action_controller_base.rb
197
197
  - lib/eac_rails_utils/patches/active_model_associations.rb
198
+ - lib/eac_rails_utils/patches/rails_4.rb
199
+ - lib/eac_rails_utils/patches/rails_4/active_record_associations_association_scope.rb
200
+ - lib/eac_rails_utils/patches/rails_5_2.rb
201
+ - lib/eac_rails_utils/patches/rails_5_2/active_model_association_method_fix.rb
198
202
  - lib/eac_rails_utils/version.rb
199
203
  homepage:
200
204
  licenses: []