From 666dcd1a00086490013257b684195a32792a9dd0 Mon Sep 17 00:00:00 2001 From: Tom Crouch Date: Sun, 7 Apr 2024 23:07:47 +0100 Subject: [PATCH 1/5] Drop unsupported rubies --- .github/workflows/gem-push.yml | 54 +++++++++++++++++----------------- .github/workflows/ruby.yml | 29 +++++++++--------- .rubocop.yml | 3 +- edits.gemspec | 2 +- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/workflows/gem-push.yml b/.github/workflows/gem-push.yml index 7f78f3f..42bd67b 100644 --- a/.github/workflows/gem-push.yml +++ b/.github/workflows/gem-push.yml @@ -2,7 +2,7 @@ name: Ruby Gem on: push: - tags: [ 'v*.*.*' ] + tags: ["v*.*.*"] jobs: build: @@ -13,31 +13,31 @@ jobs: packages: write steps: - - uses: actions/checkout@v2 - - name: Set up Ruby 2.7 - uses: actions/setup-ruby@v1 - with: - ruby-version: 2.7.x + - uses: actions/checkout@v2 + - name: Set up Ruby 3.1 + uses: actions/setup-ruby@v1 + with: + ruby-version: 3.1.x - - name: Publish to GPR - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem build *.gemspec - gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem - env: - GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}" - OWNER: ${{ github.repository_owner }} + - name: Publish to GPR + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem build *.gemspec + gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem + env: + GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}" + OWNER: ${{ github.repository_owner }} - - name: Publish to RubyGems - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem build *.gemspec - gem push *.gem - env: - GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}" + - name: Publish to RubyGems + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem build *.gemspec + gem push *.gem + env: + GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}" diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 8ec16e2..a91fc09 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -10,15 +10,14 @@ name: Ruby on: push: pull_request: - branches: [ main ] + branches: [main] jobs: test: - runs-on: ubuntu-latest strategy: matrix: - ruby-version: ["2.7", "3.0", "3.1", "3.2", "3.3"] + ruby-version: ["3.1", "3.2", "3.3"] allow-failure: [false] include: - ruby-version: "ruby-head" @@ -26,16 +25,16 @@ jobs: continue-on-error: ${{ matrix.allow-failure }} steps: - - name: Checkout 🛎 - uses: actions/checkout@v2 - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} - bundler-cache: true - - name: Run tests - run: bundle exec rake - - name: Run codacy-coverage-reporter 📈 - uses: codacy/codacy-coverage-reporter-action@v1 - with: + - name: Checkout 🛎 + uses: actions/checkout@v2 + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true + - name: Run tests + run: bundle exec rake + - name: Run codacy-coverage-reporter 📈 + uses: codacy/codacy-coverage-reporter-action@v1 + with: project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} diff --git a/.rubocop.yml b/.rubocop.yml index f5c7a7c..8858d04 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,6 @@ AllCops: - TargetRubyVersion: 2.7 + TargetRubyVersion: 3.1 + NewCops: enable Metrics/AbcSize: Enabled: false Metrics/CyclomaticComplexity: diff --git a/edits.gemspec b/edits.gemspec index f160021..e56df1b 100644 --- a/edits.gemspec +++ b/edits.gemspec @@ -25,7 +25,7 @@ Gem::Specification.new do |spec| spec.bindir = "exe" spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.required_ruby_version = ">= 2.7" + spec.required_ruby_version = ">= 3.1" spec.add_development_dependency "benchmark-ips", "~> 2.8" spec.add_development_dependency "bundler", "~> 2.0" From b7c5a7233c0c7ceee275b243028653d468bd9a74 Mon Sep 17 00:00:00 2001 From: Tom Crouch Date: Sun, 7 Apr 2024 23:09:11 +0100 Subject: [PATCH 2/5] Update development dependencies --- edits.gemspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/edits.gemspec b/edits.gemspec index e56df1b..167e4ec 100644 --- a/edits.gemspec +++ b/edits.gemspec @@ -27,11 +27,11 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] spec.required_ruby_version = ">= 3.1" - spec.add_development_dependency "benchmark-ips", "~> 2.8" + spec.add_development_dependency "benchmark-ips", "~> 2.10" spec.add_development_dependency "bundler", "~> 2.0" spec.add_development_dependency "rake", "~> 13.0" spec.add_development_dependency "redcarpet", "~> 3.5" - spec.add_development_dependency "rspec", "~> 3.9" + spec.add_development_dependency "rspec", "~> 3.11" spec.add_development_dependency "simplecov", "~> 0.21" spec.add_development_dependency "simplecov-lcov", "~> 0.8" spec.add_development_dependency "yard", "~> 0.9" From a2b016f6acd43835ca1942ff04133f94395c78ce Mon Sep 17 00:00:00 2001 From: Tom Crouch Date: Mon, 4 Aug 2025 21:19:29 +0100 Subject: [PATCH 3/5] Add ruby 3.4 to version matrix --- .github/workflows/ruby.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index a91fc09..dbf5036 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ["3.1", "3.2", "3.3"] + ruby-version: ["3.1", "3.2", "3.3", "3.4"] allow-failure: [false] include: - ruby-version: "ruby-head" From 308b66b9489d1b964ef2011d931ffcad461a6019 Mon Sep 17 00:00:00 2001 From: Tom Crouch Date: Mon, 4 Aug 2025 21:51:31 +0100 Subject: [PATCH 4/5] Code quality tweaks --- .rubocop.yml | 1 - lib/edits/jaro_winkler.rb | 2 +- tasks/benchmark.rake | 2 +- tasks/benchmark/levenshtein.rake | 6 +++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 8858d04..290a552 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,6 +1,5 @@ AllCops: TargetRubyVersion: 3.1 - NewCops: enable Metrics/AbcSize: Enabled: false Metrics/CyclomaticComplexity: diff --git a/lib/edits/jaro_winkler.rb b/lib/edits/jaro_winkler.rb index 780444c..42110e2 100644 --- a/lib/edits/jaro_winkler.rb +++ b/lib/edits/jaro_winkler.rb @@ -65,7 +65,7 @@ def self.distance( threshold: WINKLER_THRESHOLD, weight: WINKLER_PREFIX_WEIGHT ) - 1.0 - similarity(seq1, seq2, threshold: threshold, weight: weight) + 1.0 - similarity(seq1, seq2, threshold:, weight:) end end end diff --git a/tasks/benchmark.rake b/tasks/benchmark.rake index b299531..86256d7 100644 --- a/tasks/benchmark.rake +++ b/tasks/benchmark.rake @@ -6,7 +6,7 @@ require "edits" desc "Compare metrics" task :benchmark do words = File.read("/usr/share/dict/words") - .split(/\n/).compact.shuffle(random: Random.new(1)) + .split("\n").compact.shuffle(random: Random.new(1)) Benchmark.bm(20) do |x| x.report("Hamming") do diff --git a/tasks/benchmark/levenshtein.rake b/tasks/benchmark/levenshtein.rake index afe5ea6..6e586be 100644 --- a/tasks/benchmark/levenshtein.rake +++ b/tasks/benchmark/levenshtein.rake @@ -8,7 +8,7 @@ namespace :benchmark do desc "levenshtein distance vs distance_with_max (x100)" task :lev_max do words = File.read("/usr/share/dict/words") - .split(/\n/).compact.shuffle(random: Random.new(1)) + .split("\n").compact.shuffle(random: Random.new(1)) .take(101) Benchmark.ips do |x| @@ -67,7 +67,7 @@ namespace :benchmark do desc "restricted distance vs distance_with_max (x100)" task :restricted_max do words = File.read("/usr/share/dict/words") - .split(/\n/).compact.shuffle(random: Random.new(1)) + .split("\n").compact.shuffle(random: Random.new(1)) .take(101) Benchmark.ips do |x| @@ -126,7 +126,7 @@ namespace :benchmark do desc "most_similar vs min_by (100 words)" task :lev_similar do words = File.read("/usr/share/dict/words") - .split(/\n/).compact.shuffle(random: Random.new(1)) + .split("\n").compact.shuffle(random: Random.new(1)) .take(100) Benchmark.ips do |x| From 1b421366096ef5c6cea775c86217ec21757fdeeb Mon Sep 17 00:00:00 2001 From: Tom Crouch Date: Mon, 4 Aug 2025 21:55:36 +0100 Subject: [PATCH 5/5] Add benchmark as development dependency --- edits.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/edits.gemspec b/edits.gemspec index 167e4ec..b910469 100644 --- a/edits.gemspec +++ b/edits.gemspec @@ -27,6 +27,7 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] spec.required_ruby_version = ">= 3.1" + spec.add_development_dependency "benchmark" spec.add_development_dependency "benchmark-ips", "~> 2.10" spec.add_development_dependency "bundler", "~> 2.0" spec.add_development_dependency "rake", "~> 13.0"