From b661b5fefc571b317832fb9fcb3d38b0d94f6c9e Mon Sep 17 00:00:00 2001 From: Vladimir Dementyev Date: Mon, 8 Jan 2024 16:08:28 -0800 Subject: [PATCH] fix: Ruby 3.3.0 compat --- .github/workflows/rspec.yml | 5 ++++- .rubocop.yml | 7 +++++++ lib/anyway/config.rb | 4 ++-- lib/anyway/tracing.rb | 12 ++++++------ spec/config_spec.rb | 2 +- spec/rails/loaders/credentials_spec.rb | 2 +- spec/rails/loaders/secrets_spec.rb | 2 +- 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index d6ec408f..ec150213 100644 --- a/.github/workflows/rspec.yml +++ b/.github/workflows/rspec.yml @@ -24,9 +24,12 @@ jobs: ] rbs: ['false'] include: - - ruby: "3.2" + - ruby: "3.3" gemfile: "Gemfile" rbs: 'true' + - ruby: "3.2" + gemfile: "Gemfile" + rbs: 'false' - ruby: "3.2" gemfile: "gemfiles/rails7.gemfile" rbs: 'false' diff --git a/.rubocop.yml b/.rubocop.yml index 21eae1d6..f63357f9 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -30,3 +30,10 @@ Style/FrozenStringLiteralComment: Lint/RedundantRequireStatement: Enabled: false + +Lint/ItWithoutArgumentsInBlock: + Enabled: false + +# Doesn't work in Ruby 3.3.0 https://bugs.ruby-lang.org/issues/20090 +Style/ArgumentsForwarding: + Enabled: false \ No newline at end of file diff --git a/lib/anyway/config.rb b/lib/anyway/config.rb index aa2284a2..db3d917d 100644 --- a/lib/anyway/config.rb +++ b/lib/anyway/config.rb @@ -389,9 +389,9 @@ def load(overrides = nil) self end - def load_from_sources(base_config, **) + def load_from_sources(base_config, **opts) Anyway.loaders.each do |(_id, loader)| - Utils.deep_merge!(base_config, loader.call(**)) + Utils.deep_merge!(base_config, loader.call(**opts)) end base_config end diff --git a/lib/anyway/tracing.rb b/lib/anyway/tracing.rb index 7cea2a59..79c50c6a 100644 --- a/lib/anyway/tracing.rb +++ b/lib/anyway/tracing.rb @@ -26,12 +26,12 @@ def dig(...) value.dig(...) end - def record_value(val, *path, **) + def record_value(val, *path, **opts) key = path.pop trace = if val.is_a?(Hash) - Trace.new.tap { it.merge_values(val, **) } + Trace.new.tap { it.merge_values(val, **opts) } else - Trace.new(:value, val, **) + Trace.new(:value, val, **opts) end target_trace = path.empty? ? self : value.dig(*path) @@ -40,14 +40,14 @@ def record_value(val, *path, **) val end - def merge_values(hash, **) + def merge_values(hash, **opts) return hash unless hash hash.each do |key, val| if val.is_a?(Hash) - value[key.to_s].merge_values(val, **) + value[key.to_s].merge_values(val, **opts) else - value[key.to_s] = Trace.new(:value, val, **) + value[key.to_s] = Trace.new(:value, val, **opts) end end diff --git a/spec/config_spec.rb b/spec/config_spec.rb index 8e27ba26..a94cf07f 100644 --- a/spec/config_spec.rb +++ b/spec/config_spec.rb @@ -59,7 +59,7 @@ port: 3000 def submeta=(val) - super JSON.parse(val) + super(JSON.parse(val)) end end end diff --git a/spec/rails/loaders/credentials_spec.rb b/spec/rails/loaders/credentials_spec.rb index aa38ff53..5cbe6ac6 100644 --- a/spec/rails/loaders/credentials_spec.rb +++ b/spec/rails/loaders/credentials_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "Anyway::Rails::Loaders::Credentials", :rails, skip: (NORAILS || !Rails.application.respond_to?(:credentials)) do +describe "Anyway::Rails::Loaders::Credentials", :rails, skip: NORAILS || !Rails.application.respond_to?(:credentials) do subject { Anyway::Rails::Loaders::Credentials.call(**options) } let(:options) { {name: "cool", some_other: "value"} } diff --git a/spec/rails/loaders/secrets_spec.rb b/spec/rails/loaders/secrets_spec.rb index cdb748ba..af568939 100644 --- a/spec/rails/loaders/secrets_spec.rb +++ b/spec/rails/loaders/secrets_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "Anyway::Rails::Loaders::Secrets", :rails, :secrets, skip: (NORAILS || !Rails.application.respond_to?(:secrets)) do +describe "Anyway::Rails::Loaders::Secrets", :rails, :secrets, skip: NORAILS || !Rails.application.respond_to?(:secrets) do subject { Anyway::Rails::Loaders::Secrets.call(**options) } let(:options) { {name: "cool", some_other: "value"} }