From d6bebcd248a2822177b9d14e99dd47e294b9b3df Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Tue, 1 Oct 2019 12:44:31 +0200 Subject: [PATCH] Fix Ruby 2.7 compatibility in GenericService.underscore --- src/ruby/lib/grpc/generic/service.rb | 1 + src/ruby/spec/generic/service_spec.rb | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/ruby/lib/grpc/generic/service.rb b/src/ruby/lib/grpc/generic/service.rb index 169a62f11d3..399d0355c8a 100644 --- a/src/ruby/lib/grpc/generic/service.rb +++ b/src/ruby/lib/grpc/generic/service.rb @@ -31,6 +31,7 @@ module GRPC # # @param s [String] the string to be converted. def self.underscore(s) + s = +s # Avoid mutating the argument, as it might be frozen. s.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2') s.gsub!(/([a-z\d])([A-Z])/, '\1_\2') s.tr!('-', '_') diff --git a/src/ruby/spec/generic/service_spec.rb b/src/ruby/spec/generic/service_spec.rb index 57aec89ce51..16f8783152e 100644 --- a/src/ruby/spec/generic/service_spec.rb +++ b/src/ruby/spec/generic/service_spec.rb @@ -55,6 +55,8 @@ describe GenericService do expect(GenericService.underscore('AMethod')).to eq('a_method') expect(GenericService.underscore('PrintHTML')).to eq('print_html') expect(GenericService.underscore('SeeHTMLBooks')).to eq('see_html_books') + + expect(GenericService.underscore('SeeHTMLBooks'.freeze)).to eq('see_html_books') end end