eac_rails_utils 0.13.2 → 0.14.0

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: d38b7d92069d23f67edd417c1271639ccdc5612e9feceb7cd1bb1ede4898995a
4
- data.tar.gz: 8a01b9127fdeefb36947ff20ee3f6b912e1a2eb37c614bdf70cae702386465c2
3
+ metadata.gz: 5c4f6d085f9a7e1f6b39c4028498cac28f482540993e73bdadff0b58e6f1e214
4
+ data.tar.gz: d369558ea68714a4d0dedb89b3af900945be5c57113da0241b5332e818f634d8
5
5
  SHA512:
6
- metadata.gz: 9474fb9b74aa4ab2206c977327e4b412384fc5a48ec4fa1c05cb69d42eec636af3db5e96c9fe46c3d2bad2c50a9f4f61ea23a61aab2e58c85418505885335403
7
- data.tar.gz: 29927c86f2c9981e83bbe734371b63f2b3d44e3b0b1354e63e266f3dc131e28a679c18501e740ae5e3b86e3093b99127e048b43788fe9b85909dfa5d96aad048
6
+ metadata.gz: 591317f786a1edac276ac1ce0ecea5dcacbdfdbbd5635b51cd8e064c45ea921e4b8819bf78b49be0e708d13843843b896ab4e33d8f034e1146cb6584e0a9c798
7
+ data.tar.gz: 6f9760a2990de21e42b779f22d38aff09fa83b722959f551aff3bace7b9eef7f0db9cb8acb617bd3a5d4f9935e95090546c64de317cd8d68d4503b2d0e11989f
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ def patch_json?
4
+ require 'json'
5
+
6
+ ::Gem::Version.new(RUBY_VERSION) >= ::Gem::Version.new('2.7') &&
7
+ ::Gem::Version.new(JSON::VERSION) < ::Gem::Version.new('2')
8
+ rescue ::LoadError
9
+ false
10
+ end
11
+
12
+ if patch_json?
13
+ module JSON
14
+ module_function
15
+
16
+ def parse(source, opts = {})
17
+ Parser.new(source, **opts).parse
18
+ end
19
+ end
20
+ end
@@ -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
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacRailsUtils
6
+ module Rspec
7
+ module Setup
8
+ module ModelsUtils
9
+ def model_record_attribute_test(record_variable, attribute, valid, value)
10
+ context("when #{record_variable}.#{attribute} == #{value}") do
11
+ before do
12
+ send(record_variable).send("#{attribute}=", value)
13
+ end
14
+
15
+ it "#{record_variable} should be {valid ? '' : 'not '}valid" do
16
+ expect(send(record_variable).valid?).to send("be_#{valid ? 'truthy' : 'falsy'}"),
17
+ send(record_variable).errors.messages
18
+ end
19
+ end
20
+ end
21
+
22
+ def model_record_values_attribute_test(record_variable, attribute, valid, values)
23
+ values.each do |value|
24
+ model_record_attribute_test(record_variable, attribute, valid, value)
25
+ end
26
+ end
27
+
28
+ def model_record_valid_invalid_values_attribute_test(record_variable, attribute,
29
+ valid_values, invalid_values)
30
+ {
31
+ false => invalid_values,
32
+ true => valid_values
33
+ }.each do |valid, values|
34
+ model_record_values_attribute_test(record_variable, attribute, valid, values)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacRailsUtils
6
+ module Rspec
7
+ module Setup
8
+ require_sub __FILE__
9
+
10
+ def self.extended(setup_obj)
11
+ setup_obj.rspec_config.extend(::EacRailsUtils::Rspec::Setup::ModelsUtils)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRailsUtils
4
+ module Rspec
5
+ require 'eac_ruby_utils/require_sub'
6
+ ::EacRubyUtils.require_sub(__FILE__)
7
+ end
8
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRailsUtils
4
- VERSION = '0.13.2'
4
+ VERSION = '0.14.0'
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.2
4
+ version: 0.14.0
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-15 00:00:00.000000000 Z
11
+ date: 2021-10-24 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.2'
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.2'
130
+ version: '0.4'
131
131
  description:
132
132
  email:
133
133
  executables: []
@@ -162,6 +162,7 @@ files:
162
162
  - app/validators/eac_rails_utils/cpf_validator.rb
163
163
  - app/validators/eac_rails_utils/no_presence_validator.rb
164
164
  - config/initializers/assets.rb
165
+ - config/initializers/json.rb
165
166
  - config/locales/en.yml
166
167
  - config/locales/pt-BR.yml
167
168
  - lib/assets/images/sort_asc.png
@@ -195,6 +196,13 @@ files:
195
196
  - lib/eac_rails_utils/patches.rb
196
197
  - lib/eac_rails_utils/patches/action_controller_base.rb
197
198
  - lib/eac_rails_utils/patches/active_model_associations.rb
199
+ - lib/eac_rails_utils/patches/rails_4.rb
200
+ - lib/eac_rails_utils/patches/rails_4/active_record_associations_association_scope.rb
201
+ - lib/eac_rails_utils/patches/rails_5_2.rb
202
+ - lib/eac_rails_utils/patches/rails_5_2/active_model_association_method_fix.rb
203
+ - lib/eac_rails_utils/rspec.rb
204
+ - lib/eac_rails_utils/rspec/setup.rb
205
+ - lib/eac_rails_utils/rspec/setup/models_utils.rb
198
206
  - lib/eac_rails_utils/version.rb
199
207
  homepage:
200
208
  licenses: []