fix regex_match error and build fail

This commit is contained in:
bizhiyuan 2023-08-14 16:27:44 +08:00
parent ce7ad13747
commit 73e0b4570f
3 changed files with 62 additions and 8 deletions

View File

@ -0,0 +1,27 @@
From 82d5efc5796e8e4864e495da6280c6edd7d09375 Mon Sep 17 00:00:00 2001
From: Olle Jonsson <olle.jonsson@gmail.com>
Date: Thu, 17 Dec 2020 14:10:06 +0100
Subject: [PATCH] Avoid "deprecated Object#=~ is called on Integer"
In a test suite I was using, I saw this warning printed liberally:
warning: deprecated Object#=~ is called on Integer; it always returns nil
Change inspired by the same kind of fix here: https://github.com/rails/rails/commit/eafff15a023670974bd71efaec51e4c80364b95d
---
mustermann/lib/mustermann/ast/translator.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mustermann/lib/mustermann/ast/translator.rb b/mustermann/lib/mustermann/ast/translator.rb
index 596e362..87b90c7 100644
--- a/mustermann/lib/mustermann/ast/translator.rb
+++ b/mustermann/lib/mustermann/ast/translator.rb
@@ -120,7 +120,7 @@ def decorator_for(node)
# @!visibility private
def escape(char, parser: URI::DEFAULT_PARSER, escape: parser.regexp[:UNSAFE], also_escape: nil)
escape = Regexp.union(also_escape, escape) if also_escape
- char =~ escape ? parser.escape(char, Regexp.union(*escape)) : char
+ char.to_s =~ escape ? parser.escape(char, Regexp.union(*escape)) : char
end
end
end

View File

@ -0,0 +1,23 @@
From 8be5bd4ac3642d9c9582d0a7258f3197fa54bb96 Mon Sep 17 00:00:00 2001
From: Paul Padier <paul.padier@outlook.com>
Date: Wed, 20 Jul 2022 22:32:25 +0900
Subject: [PATCH] Don't call #=~ on objects that don't respond to it
`Kernel` defined `#=~` up until Ruby 3.2, but it just returned `nil` when the method wasn't redefined by a child class.
---
mustermann/lib/mustermann/ast/expander.rb | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mustermann/lib/mustermann/ast/expander.rb b/mustermann/lib/mustermann/ast/expander.rb
index 6cb9110..f5ca874 100644
--- a/mustermann/lib/mustermann/ast/expander.rb
+++ b/mustermann/lib/mustermann/ast/expander.rb
@@ -124,6 +124,8 @@ def error_for(values)
# @see Mustermann::AST::Translator#expand
# @!visibility private
ruby2_keywords def escape(string, *args)
+ return super unless string.respond_to?(:=~)
+
# URI::Parser is pretty slow, let's not send every string to it, even if it's unnecessary
string =~ /\A\w*\Z/ ? string : super
end

View File

@ -2,7 +2,7 @@
%{?_with_bootstrap: %global bootstrap 1}
Name: rubygem-%{gem_name}
Version: 1.1.1
Release: 1
Release: 2
Summary: Your personal string matching expert
License: MIT
URL: https://github.com/sinatra/mustermann
@ -13,6 +13,9 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem
Source1: %{gem_name}-%{version}-support.tgz
# tar czvf mustermann-1.1.1-mustermann-contrib.tgz mustermann-contrib/
Source2: %{gem_name}-%{version}-mustermann-contrib.tgz
Patch0: %{gem_name}-2.0.2-ruby32-regex_match-for-object.patch
# Similarly, from https://github.com/sinatra/mustermann/pull/113
Patch1: %{gem_name}-1.1.1-ruby32-regex_match-for-object-2.patch
BuildRequires: ruby(release) rubygems-devel ruby >= 2.2.0 rubygem(rspec) rubygem(rspec-its)
%if ! 0%{?bootstrap}
BuildRequires: rubygem(sinatra)
@ -31,7 +34,8 @@ Documentation for %{name}.
%prep
%setup -q -n %{gem_name}-%{version} -b 1 -b 2
%gemspec_remove_dep -g ruby2_keywords
%patch0 -p2
%patch1 -p2
%build
gem build ../%{gem_name}-%{version}.gemspec
@ -42,10 +46,6 @@ mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* \
%{buildroot}%{gem_dir}/
pushd %{_builddir}/%{gem_name}-%{version}/%{gem_instdir}
mv spec/identity_spec.rb{,.disabled}
mv spec/concat_spec.rb{,.disabled}
popd
%if ! 0%{?bootstrap}
%check
@ -78,6 +78,9 @@ popd
%{gem_instdir}/spec
%changelog
* Mon Aug 14 2023 bizhiyuan <bizhiyuan@kylinos.cn> - 1.1.1-2
- fix regex_match error and build fail
* Thu Feb 24 2022 liyanan <liyanan32@huawei.com> - 1.1.1-1
- update to 1.1.1
@ -86,3 +89,4 @@ popd
* Wed Aug 19 2020 geyanan <geyanan2@huawei.com> - 1.0.2-1
- package init