ruby3-backward-compatibility 0.2.2 → 0.3.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: f41ca19f2c12e6f2d275f62bf3079587ffcbd70f455f7b12761cd3ed91a8cf6e
4
- data.tar.gz: 9c3d76a042555bcadb4452486bcd4948a1702f3a7920fcb600cbe4976497aa46
3
+ metadata.gz: ced5ff7ed2f076e330be4b444f418d6ea102ba732bedf7540a6594c1bd4703b4
4
+ data.tar.gz: 36314617ae1e2e10e04e6b7db71a93a70226bacceec9ef1591f4ede1925d7f26
5
5
  SHA512:
6
- metadata.gz: f76bec36e842805432da6e44f3eef1c5bc6ebc4671fd73c849f4af770b8e0a8ba0643e696c3cf1b473c3154ea5f3b20bc67320903c283206929cac03bbdca268
7
- data.tar.gz: 57880ff6f4dab6bdcf19979dc7fd4faf4500f6103fa0eb5f38dfc2f1d10aaadd53b65d4baf81028ae05c86da2a370b5128a6b8a5f96fef103ef808e92297d490
6
+ metadata.gz: 238d11616add2f0cb7253a52f781735244d5ad0009033710319382e9c10f76109b7d48a6b90bc089937d9f597e86d900479815eb93dda1f2ffa3f88f05599b90
7
+ data.tar.gz: b9707b24ece18a5da64d85cff697102d4491ddf34a828395d50882f2a84f77a6c97dff28eabd4c44ce50b97624f8a0aa369b40b32ba417e3df4213f656424914
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] - 2022-11-22
4
+
5
+ - Security fix: `ruby3_backward_compatibility/compatibility/psych` no longer aliases YAML.load to YAML.safe_load.
6
+
7
+ ## [0.2.3] - 2022-11-22
8
+
9
+ - Add `ignore_missing: true` option for `ruby3_keywords` to not crash on missing methods.
10
+ - Fix `ruby3_backward_compatibility/compatibility/i18n` to not crash when used with older I18n versions.
11
+
3
12
  ## [0.2.2] - 2022-11-10
4
13
 
5
14
  - Fix `ruby3_keywords` to pass blocks.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby3-backward-compatibility (0.2.2)
4
+ ruby3-backward-compatibility (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -3,5 +3,5 @@ require 'i18n'
3
3
  module I18n::Base
4
4
  extend Ruby3BackwardCompatibility::Ruby3Keywords
5
5
 
6
- ruby3_keywords :translate, :translate!, :localize, :t, :l, :transliterate
6
+ ruby3_keywords :translate, :translate!, :localize, :t, :l, :transliterate, ignore_missing: true
7
7
  end
@@ -8,12 +8,6 @@ module Ruby3BackwardCompatibility
8
8
  end
9
9
 
10
10
  module ClassMethods
11
- if Psych::VERSION >= '4'
12
- def load(...)
13
- unsafe_load(...)
14
- end
15
- end
16
-
17
11
  def safe_load(yaml, legacy_permitted_classes = NOT_GIVEN, legacy_permitted_symbols = NOT_GIVEN, legacy_aliases = NOT_GIVEN, legacy_filename = NOT_GIVEN, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, **args)
18
12
  if legacy_permitted_classes != NOT_GIVEN
19
13
  permitted_classes = legacy_permitted_classes
@@ -1,7 +1,12 @@
1
1
  module Ruby3BackwardCompatibility
2
2
  module Ruby3Keywords
3
- def self.find_owned_instance_method(mod, method_name)
4
- method = mod.send(:instance_method, method_name)
3
+ def self.find_owned_instance_method(mod, method_name, ignore_missing: false)
4
+ method = begin
5
+ mod.send(:instance_method, method_name)
6
+ rescue NameError
7
+ return if ignore_missing
8
+ raise NameError, "method '#{method_name}' is not defined"
9
+ end
5
10
  while method.owner > mod
6
11
  # we found the method in a prepended module
7
12
  super_method = method.super_method
@@ -21,12 +26,15 @@ module Ruby3BackwardCompatibility
21
26
  by.send(:_ruby3_keywords_module)
22
27
  end
23
28
 
24
- def ruby3_keywords(*method_names)
29
+ def ruby3_keywords(*method_names, ignore_missing: false)
25
30
  method_names.each do |method_name|
26
31
  method_is_private = private_instance_methods.include?(method_name)
27
32
  method_is_protected = protected_instance_methods.include?(method_name)
28
33
 
29
- required_param_count = Ruby3Keywords.find_owned_instance_method(self, method_name).parameters.sum { |(kind, _name)| kind == :req ? 1 : 0 }
34
+ method = Ruby3Keywords.find_owned_instance_method(self, method_name, ignore_missing: ignore_missing)
35
+ next unless method
36
+
37
+ required_param_count = method.parameters.sum { |(kind, _name)| kind == :req ? 1 : 0 }
30
38
  _ruby3_keywords_module.define_method(method_name) do |*args, &block|
31
39
  if args.last.respond_to?(:to_hash) && args.size > required_param_count
32
40
  keyword_args = args.pop
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruby3BackwardCompatibility
4
- VERSION = '0.2.2'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby3-backward-compatibility
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Kraze
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-10 00:00:00.000000000 Z
11
+ date: 2022-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug