From 766812ceceb9b5de738aab3feaa039060d24d426 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Wed, 11 Aug 2021 09:36:04 +0200 Subject: [PATCH 1/4] CI: Use RUBYOPT: "--enable-frozen-string-literal" If it works, then great, if not, we learned something. --- .github/workflows/octokit.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/octokit.yml b/.github/workflows/octokit.yml index 598f7c4f7..a7ef36e70 100644 --- a/.github/workflows/octokit.yml +++ b/.github/workflows/octokit.yml @@ -51,4 +51,5 @@ jobs: - name: Test with RSpec env: GITHUB_CI: 1 + RUBYOPT: --enable-frozen-string-literal run: bundle exec rspec -w From 29593254467889f191b7af37309eef35784c872d Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Wed, 11 Aug 2021 12:39:51 +0200 Subject: [PATCH 2/4] CI: Install a newer RubyGems on Ruby 2.5 For details: https://github.com/rubygems/rubygems/issues/4837#issuecomment-896634483 --- .github/workflows/octokit.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/octokit.yml b/.github/workflows/octokit.yml index a7ef36e70..c931902ea 100644 --- a/.github/workflows/octokit.yml +++ b/.github/workflows/octokit.yml @@ -43,6 +43,9 @@ jobs: ruby-version: ${{ matrix.ruby }} - name: Setup .netrc run: chmod 600 spec/fixtures/.netrc + - name: Ruby 2.5 needs a newer RubyGems to support frozen-string-literal + if: ${{ matrix.ruby == '2.5' }} + run: gem update --system 2.7.11 - name: Install dependencies run: | bundle config set path .bundle/gems From 5cbfa3d62abddbdf5fe12b0788c38bc5f4fb5d03 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Wed, 11 Aug 2021 10:02:03 +0200 Subject: [PATCH 3/4] build_error_message: Use mutable string In order to support --enable-frozen-literal, this change explicitly uses a mutable string - the unary plus does that. --- lib/octokit/error.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/octokit/error.rb b/lib/octokit/error.rb index 5ceb50a54..7fc34b761 100644 --- a/lib/octokit/error.rb +++ b/lib/octokit/error.rb @@ -195,7 +195,7 @@ def response_error_summary def build_error_message return nil if @response.nil? - message = "#{@response[:method].to_s.upcase} " + message = +"#{@response[:method].to_s.upcase} " message << redact_url(@response[:url].to_s) + ": " message << "#{@response[:status]} - " message << "#{response_message}" unless response_message.nil? From d71339652e07c478fa31d1e8c7d466365323bbc9 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Wed, 11 Aug 2021 12:44:29 +0200 Subject: [PATCH 4/4] errors.rb: Mutable strings --- lib/octokit/error.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/octokit/error.rb b/lib/octokit/error.rb index 7fc34b761..6206a66ae 100644 --- a/lib/octokit/error.rb +++ b/lib/octokit/error.rb @@ -180,7 +180,7 @@ def response_error def response_error_summary return nil unless data.is_a?(Hash) && !Array(data[:errors]).empty? - summary = "\nError summary:\n" + summary = +"\nError summary:\n" summary << data[:errors].map do |error| if error.is_a? Hash error.map { |k,v| " #{k}: #{v}" } @@ -196,7 +196,7 @@ def build_error_message return nil if @response.nil? message = +"#{@response[:method].to_s.upcase} " - message << redact_url(@response[:url].to_s) + ": " + message << redact_url(@response[:url].to_s.dup) + ": " message << "#{@response[:status]} - " message << "#{response_message}" unless response_message.nil? message << "#{response_error}" unless response_error.nil?