From e63649db5c7d88f1234fa41437f69fe34cd8c14e Mon Sep 17 00:00:00 2001 From: David Milanese Date: Sat, 17 Aug 2024 01:20:48 +1000 Subject: [PATCH 1/6] update dependencies --- Gemfile.lock | 212 ++++++++++++++++++++++++++--------------- rails-patterns.gemspec | 31 +++--- 2 files changed, 145 insertions(+), 98 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ee416cc..a4cb1d6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,66 +1,87 @@ GEM remote: https://rubygems.org/ specs: - actionpack (6.1.4.1) - actionview (= 6.1.4.1) - activesupport (= 6.1.4.1) - rack (~> 2.0, >= 2.0.9) + actionpack (7.2.0) + actionview (= 7.2.0) + activesupport (= 7.2.0) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4, < 3.2) + rack-session (>= 1.0.1) rack-test (>= 0.6.3) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actionview (6.1.4.1) - activesupport (= 6.1.4.1) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + useragent (~> 0.16) + actionview (7.2.0) + activesupport (= 7.2.0) builder (~> 3.1) - erubi (~> 1.4) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - activemodel (6.1.4.1) - activesupport (= 6.1.4.1) - activerecord (6.1.4.1) - activemodel (= 6.1.4.1) - activesupport (= 6.1.4.1) - activesupport (6.1.4.1) - concurrent-ruby (~> 1.0, >= 1.0.2) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activemodel (7.2.0) + activesupport (= 7.2.0) + activerecord (7.2.0) + activemodel (= 7.2.0) + activesupport (= 7.2.0) + timeout (>= 0.4.0) + activesupport (7.2.0) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) axiom-types (0.1.1) descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) thread_safe (~> 0.3, >= 0.3.1) - builder (3.2.4) + base64 (0.2.0) + bigdecimal (3.1.8) + builder (3.3.0) coderay (1.1.3) coercible (1.0.0) descendants_tracker (~> 0.0.1) - concurrent-ruby (1.1.9) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) crass (1.0.6) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) - diff-lcs (1.4.4) - erubi (1.10.0) - faraday (1.8.0) + diff-lcs (1.5.1) + drb (2.2.1) + erubi (1.13.0) + faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) + faraday-net_http_persistent (~> 1.0) faraday-patron (~> 1.0) faraday-rack (~> 1.0) - multipart-post (>= 1.2, < 3) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-em_http (1.0.0) faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-net_http (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) - git (1.9.1) + faraday-retry (1.0.3) + git (2.1.1) + activesupport (>= 5.0) + addressable (~> 2.8) + process_executer (~> 1.1) rchardet (~> 1.8) github_api (0.19.0) addressable (~> 2.4) @@ -69,10 +90,12 @@ GEM hashie (~> 3.5, >= 3.5.2) oauth2 (~> 1.0) hashie (3.6.0) - highline (2.0.3) - i18n (1.8.11) + highline (3.1.0) + reline + i18n (1.14.5) concurrent-ruby (~> 1.0) ice_nine (0.11.2) + io-console (0.7.2) juwelier (2.4.9) builder bundler @@ -85,75 +108,106 @@ GEM rake rdoc semver2 - jwt (2.3.0) + jwt (2.8.2) + base64 kamelcase (0.0.2) semver2 (~> 3) - loofah (2.13.0) + logger (1.6.0) + loofah (2.22.0) crass (~> 1.0.2) - nokogiri (>= 1.5.9) - method_source (1.0.0) - mini_portile2 (2.6.1) - minitest (5.14.4) + nokogiri (>= 1.12.0) + method_source (1.1.0) + minitest (5.25.0) multi_json (1.15.0) - multi_xml (0.6.0) - multipart-post (2.1.1) - nokogiri (1.12.5) - mini_portile2 (~> 2.6.1) + multi_xml (0.7.1) + bigdecimal (~> 3.1) + multipart-post (2.4.1) + nokogiri (1.16.7-aarch64-linux) racc (~> 1.4) - oauth2 (1.4.7) - faraday (>= 0.8, < 2.0) + nokogiri (1.16.7-arm-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + oauth2 (1.4.11) + faraday (>= 0.17.3, < 3.0) jwt (>= 1.0, < 3.0) multi_json (~> 1.3) multi_xml (~> 0.5) - rack (>= 1.2, < 3) - pry (0.14.1) + rack (>= 1.2, < 4) + process_executer (1.1.0) + pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - pry-rails (0.3.9) - pry (>= 0.10.4) - psych (4.0.2) - public_suffix (4.0.6) - racc (1.6.0) - rack (2.2.3) - rack-test (1.1.0) - rack (>= 1.0, < 3) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) + pry-rails (0.3.11) + pry (>= 0.13.0) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.4.2) - loofah (~> 2.3) - rake (13.0.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + rake (13.2.1) rchardet (1.8.0) - rdoc (6.3.3) - redis (4.5.1) - rspec (3.10.0) - rspec-core (~> 3.10.0) - rspec-expectations (~> 3.10.0) - rspec-mocks (~> 3.10.0) - rspec-core (3.10.1) - rspec-support (~> 3.10.0) - rspec-expectations (3.10.1) + rdoc (6.7.0) + psych (>= 4.0.0) + redis (5.2.0) + redis-client (>= 0.22.0) + redis-client (0.22.2) + connection_pool + reline (0.5.9) + io-console (~> 0.5) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.10.0) - rspec-mocks (3.10.2) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.10.0) - rspec-support (3.10.3) - rspec_junit_formatter (0.4.1) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) ruby2_keywords (0.0.5) + securerandom (0.3.1) semver2 (3.4.2) + stringio (3.1.1) thread_safe (0.3.6) - tzinfo (2.0.4) + timeout (0.4.1) + tzinfo (2.0.6) concurrent-ruby (~> 1.0) + useragent (0.16.10) virtus (2.0.0) axiom-types (~> 0.1) coercible (~> 1.0) descendants_tracker (~> 0.0, >= 0.0.3) - zeitwerk (2.5.1) PLATFORMS - ruby + aarch64-linux + arm-linux + arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux DEPENDENCIES actionpack (>= 4.2.6) @@ -168,4 +222,4 @@ DEPENDENCIES virtus BUNDLED WITH - 2.1.4 + 2.5.17 diff --git a/rails-patterns.gemspec b/rails-patterns.gemspec index ff96ecc..c0e5b29 100644 --- a/rails-patterns.gemspec +++ b/rails-patterns.gemspec @@ -11,7 +11,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] s.authors = ["Stevo".freeze] - s.date = "2023-04-18" + s.date = "2024-08-16" s.description = "A collection of lightweight, standardized, rails-oriented patterns.".freeze s.email = "b.kosmowski@selleo.com".freeze s.extra_rdoc_files = [ @@ -55,29 +55,21 @@ Gem::Specification.new do |s| s.homepage = "http://github.com/selleo/pattern".freeze s.licenses = ["MIT".freeze] s.required_ruby_version = Gem::Requirement.new(">= 2.7.0".freeze) - s.rubygems_version = "3.0.8".freeze + s.rubygems_version = "3.3.27".freeze s.summary = "A collection of lightweight, standardized, rails-oriented patterns.".freeze if s.respond_to? :specification_version then s.specification_version = 4 + end - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q.freeze, [">= 4.2.6"]) - s.add_runtime_dependency(%q.freeze, [">= 4.2.6"]) - s.add_runtime_dependency(%q.freeze, [">= 0"]) - s.add_runtime_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, ["~> 2.0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - else - s.add_dependency(%q.freeze, [">= 4.2.6"]) - s.add_dependency(%q.freeze, [">= 4.2.6"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) - s.add_dependency(%q.freeze, [">= 0"]) - end + if s.respond_to? :add_runtime_dependency then + s.add_runtime_dependency(%q.freeze, [">= 4.2.6"]) + s.add_runtime_dependency(%q.freeze, [">= 4.2.6"]) + s.add_runtime_dependency(%q.freeze, [">= 0"]) + s.add_runtime_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 2.0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) else s.add_dependency(%q.freeze, [">= 4.2.6"]) s.add_dependency(%q.freeze, [">= 4.2.6"]) @@ -88,3 +80,4 @@ Gem::Specification.new do |s| s.add_dependency(%q.freeze, [">= 0"]) end end + From 87571209f9013b259fdc62cb5b6e9bae8106df09 Mon Sep 17 00:00:00 2001 From: David Milanese Date: Sat, 17 Aug 2024 01:21:45 +1000 Subject: [PATCH 2/6] resolve deprecation --- spec/patterns/calculation_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/patterns/calculation_spec.rb b/spec/patterns/calculation_spec.rb index 2dc24f2..850bb34 100644 --- a/spec/patterns/calculation_spec.rb +++ b/spec/patterns/calculation_spec.rb @@ -69,14 +69,14 @@ def result yield(subject) end end - + expect(CustomCalculation.result(5) { |a| a * 3 }).to eq(15) end end describe "caching" do it "caches result for 'set_cache_expiry_every' period" do - travel_to DateTime.new(2017, 1, 1, 12, 0) do + travel_to Time.new(2017, 1, 1, 12, 0, 0, 0) do CustomCalculation = Class.new(Patterns::Calculation) do set_cache_expiry_every 1.hour @@ -94,7 +94,7 @@ def result expect(CustomCalculation.result).to eq 1 end - travel_to DateTime.new(2017, 1, 1, 13, 1) do + travel_to Time.new(2017, 1, 1, 13, 1, 0, 0) do expect(CustomCalculation.result).to eq 2 expect(CustomCalculation.result).to eq 2 end From 1d7793a484ae4937d9e8067fe51f28d5a2091342 Mon Sep 17 00:00:00 2001 From: David Milanese Date: Sat, 17 Aug 2024 01:22:22 +1000 Subject: [PATCH 3/6] install redis docker service and flush database after each test --- docker-compose.yml | 6 ++++++ spec/patterns/calculation_spec.rb | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..00df946 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,6 @@ +services: + redis: + image: redis:alpine + ports: + - 6379:6379 + command: redis-server diff --git a/spec/patterns/calculation_spec.rb b/spec/patterns/calculation_spec.rb index 850bb34..9add615 100644 --- a/spec/patterns/calculation_spec.rb +++ b/spec/patterns/calculation_spec.rb @@ -174,6 +174,8 @@ def result end describe "when RedisCacheStore is used" do + after { Redis.new.flushdb } + it "does not store data in cache if 'cache_expiry_period' is not set" do client = Redis.new class Rails From 09daeef4216b907951d52d844bcd462bc3363381 Mon Sep 17 00:00:00 2001 From: David Milanese Date: Sat, 17 Aug 2024 01:23:59 +1000 Subject: [PATCH 4/6] run rspec after `rake test` --- .github/workflows/ruby.yml | 2 +- Rakefile | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 7b15178..828cfe3 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -30,4 +30,4 @@ jobs: ruby-version: ${{ matrix.ruby }} - run: gem install bundler - run: bundle install - - run: bundle exec rspec + - run: rake test diff --git a/Rakefile b/Rakefile index 1ba734c..3ff769a 100644 --- a/Rakefile +++ b/Rakefile @@ -40,7 +40,19 @@ task :simplecov do Rake::Task['test'].execute end +require 'rspec/core/rake_task' + +# Define the "spec" task, at task load time rather than inside another task +RSpec::Core::RakeTask.new(:spec) + +desc 'Run all tests, even those usually excluded.' +task all_tests: :environment do + ENV['RUN_ALL_TESTS'] = 'true' + Rake::Task['spec'].invoke +end + task :default => :test +task :test => :spec require 'rdoc/task' Rake::RDocTask.new do |rdoc| From e6115de109aeef988b66899676cb62c6afe515a6 Mon Sep 17 00:00:00 2001 From: David Milanese Date: Sat, 17 Aug 2024 01:24:04 +1000 Subject: [PATCH 5/6] housekeeping --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index b978d53..70d5ada 100644 --- a/Gemfile +++ b/Gemfile @@ -14,7 +14,7 @@ group :development do gem "juwelier" end -group "test" do +group :test do gem "pry-rails" gem "rspec_junit_formatter" gem "redis" From 6485dfb193815b538274ca4604ee39d3ecc4415a Mon Sep 17 00:00:00 2001 From: David Milanese Date: Sat, 17 Aug 2024 01:24:31 +1000 Subject: [PATCH 6/6] add ruby 3.1, 3.2 and 3.3 in the CI pipeline --- .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 828cfe3..d722026 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - ruby: ["2.7", "3.0"] + ruby: ["2.7", "3.0", "3.1", "3.2", "3.3"] name: RSpec for Ruby version ${{ matrix.ruby }} steps: - uses: actions/checkout@v3