From a374ba3c944f163c8eb6f0b0a005a7784e2e23d1 Mon Sep 17 00:00:00 2001 From: Tim Fischbach Date: Fri, 14 Nov 2025 08:29:50 +0100 Subject: [PATCH 1/2] Use Ruby 3.4 and Node 22 in GitHub actions Upgrade `factory_bot` to remove dependency on `observer`. REDMINE-21179 --- .github/workflows/lint.yml | 4 ++-- .github/workflows/reusable-workflow-rspec.yml | 4 ++-- .github/workflows/storybook.yml | 8 ++++---- .github/workflows/tests.yml | 18 +++++++++--------- README.md | 4 ++-- pageflow.gemspec | 2 +- spec/support/pageflow-support.gemspec | 2 +- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 55c5f8051..0a177ccf1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -36,12 +36,12 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3.2 + ruby-version: 3.4 - name: Set up Node.js uses: actions/setup-node@v1 with: - node-version: 18 + node-version: 22 # Dependencies diff --git a/.github/workflows/reusable-workflow-rspec.yml b/.github/workflows/reusable-workflow-rspec.yml index bfeec0abb..3fe50bd6a 100644 --- a/.github/workflows/reusable-workflow-rspec.yml +++ b/.github/workflows/reusable-workflow-rspec.yml @@ -13,8 +13,8 @@ jobs: fail-fast: false matrix: include: - - ruby-version: 3.2 - - ruby-version: 3.2 + - ruby-version: 3.4 + - ruby-version: 3.4 rails-version: "~> 7.2" env: diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index 564da1b85..af2948702 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -77,15 +77,15 @@ jobs: # Ruby/Node - - name: Set up Ruby 3.2 + - name: Set up Ruby 3.4 uses: ruby/setup-ruby@v1 with: - ruby-version: 3.2 + ruby-version: 3.4 - - name: Set up Node.js 18 + - name: Set up Node.js 22 uses: actions/setup-node@v1 with: - node-version: 18 + node-version: 22 # Dependencies diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2dd2ba212..b1f5ecd8e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -25,34 +25,34 @@ jobs: include: - job: pageflow engine-name: pageflow - ruby-version: 3.2 + ruby-version: 3.4 engine-directory: . rspec-command: bin/rspec --tag ~js install-audiowaveform: true - job: pageflow_js engine-name: pageflow - ruby-version: 3.2 + ruby-version: 3.4 engine-directory: . rspec-command: bin/rspec-with-retry --tag js - job: pageflow_paged engine-name: pageflow_paged - ruby-version: 3.2 + ruby-version: 3.4 engine-directory: entry_types/paged plugin-name: pageflow_paged rspec-command: bin/rspec - job: pageflow_scrolled engine-name: pageflow_scrolled - ruby-version: 3.2 + ruby-version: 3.4 engine-directory: entry_types/scrolled plugin-name: pageflow_scrolled rspec-command: bin/rspec --tag ~js - job: pageflow_scrolled_js engine-name: pageflow_scrolled - ruby-version: 3.2 + ruby-version: 3.4 engine-directory: entry_types/scrolled plugin-name: pageflow_scrolled rspec-command: bin/rspec-with-retry-on-timeout --tag js @@ -112,10 +112,10 @@ jobs: with: ruby-version: ${{ matrix.ruby-version }} - - name: Use Node.js 18 + - name: Use Node.js 22 uses: actions/setup-node@v1 with: - node-version: 18 + node-version: 22 # Dependencies @@ -200,10 +200,10 @@ jobs: restore-keys: | ${{ runner.os }}-yarn- - - name: Set up Node.js 18 + - name: Set up Node.js 22 uses: actions/setup-node@v1 with: - node-version: 18 + node-version: 22 - name: Yarn install run: | diff --git a/README.md b/README.md index 89ed135b3..0761d95ab 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,8 @@ Pageflow assumes the following choice of libraries: Pageflow runs in environments with: -* Ruby >= 3.2 -* Node >= 18 +* Ruby >= 3.4 +* Node >= 22 * Rails 7.1 * Redis server (for Resque) * A database server supported by Active Record (tested with MySQL) diff --git a/pageflow.gemspec b/pageflow.gemspec index e1d2ae428..5a29b3305 100644 --- a/pageflow.gemspec +++ b/pageflow.gemspec @@ -188,7 +188,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'domino', '~> 0.7.0' # Fixture replacement - s.add_development_dependency 'factory_bot_rails', '~> 4.8' + s.add_development_dependency 'factory_bot_rails', '~> 6.5' # Matchers for Pundit policies s.add_development_dependency 'pundit-matchers', '~> 1.0' diff --git a/spec/support/pageflow-support.gemspec b/spec/support/pageflow-support.gemspec index 2b0062543..e0aa48a6c 100644 --- a/spec/support/pageflow-support.gemspec +++ b/spec/support/pageflow-support.gemspec @@ -22,7 +22,7 @@ Gem::Specification.new do |s| s.add_dependency 'pageflow', Pageflow::VERSION s.add_dependency 'domino', '~> 0.7.0' - s.add_dependency 'factory_bot_rails', '~> 4.8' + s.add_dependency 'factory_bot_rails', '~> 6.5' s.add_dependency 'bootsnap', '~> 1.0' s.add_dependency 'listen', '~> 3.0' From 3b536be0b1b613001799006bb5284a5c96cf5db5 Mon Sep 17 00:00:00 2001 From: Tim Fischbach Date: Mon, 17 Nov 2025 10:24:32 +0100 Subject: [PATCH 2/2] Fix factory_bot 6.x compatibility in permalinkable spec Factory_bot 6.x defaults use_parent_strategy to true, so build() now builds rather than creates associations. This caused the test to fail because entry.site_id was nil when the site wasn't persisted. REDMINE-21179 --- spec/models/concerns/pageflow/permalinkable_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/concerns/pageflow/permalinkable_spec.rb b/spec/models/concerns/pageflow/permalinkable_spec.rb index 1f6bc3eec..d9e9a0c85 100644 --- a/spec/models/concerns/pageflow/permalinkable_spec.rb +++ b/spec/models/concerns/pageflow/permalinkable_spec.rb @@ -3,7 +3,7 @@ module Pageflow describe Permalinkable do it 'accepts permalink attributes on create' do - entry = build(:entry) + entry = create(:entry) permalink_directory = create(:permalink_directory, site: entry.site) entry.update!(permalink_attributes: { slug: 'some-slug',