From 47713f197ac2971710d9e844092f6ac0689e5aed Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Wed, 11 Mar 2026 18:02:47 +0100 Subject: [PATCH 1/4] fix: Use Alchemy's page etag generator The `Alchemy::Page:EtagGenerator` takes time based element publishing into account. --- Gemfile | 4 ++-- app/controllers/alchemy/json_api/pages_controller.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 2b0ee91..c8bcb7b 100644 --- a/Gemfile +++ b/Gemfile @@ -17,9 +17,9 @@ gemspec # gem 'byebug', group: [:development, :test] gem "sqlite3", "~> 2.2" -alchemy_branch = ENV.fetch("ALCHEMY_BRANCH", "8.1-stable") +alchemy_branch = ENV.fetch("ALCHEMY_BRANCH", "main") gem "alchemy_cms", github: "AlchemyCMS/alchemy_cms", branch: alchemy_branch -gem "alchemy-devise", github: "AlchemyCMS/alchemy-devise", branch: "main" +gem "alchemy-devise", github: "AlchemyCMS/alchemy-devise", branch: alchemy_branch gem "rubocop", require: false gem "standard", "~> 1.25", require: false diff --git a/app/controllers/alchemy/json_api/pages_controller.rb b/app/controllers/alchemy/json_api/pages_controller.rb index 1758214..9ee20b5 100644 --- a/app/controllers/alchemy/json_api/pages_controller.rb +++ b/app/controllers/alchemy/json_api/pages_controller.rb @@ -125,7 +125,7 @@ def etag(pages) end def page_cache_key(page) - page.cache_key_with_version + Alchemy::Page::EtagGenerator.new(page).call end def base_page_scope From b2654405a209d0d79f6bfe3e69ffb794cb4c311f Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Thu, 12 Mar 2026 10:36:53 +0100 Subject: [PATCH 2/4] fix(specs): Make sure page versions match Nested elements are now validated to share the same page version --- spec/serializers/alchemy/json_api/element_serializer_spec.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/serializers/alchemy/json_api/element_serializer_spec.rb b/spec/serializers/alchemy/json_api/element_serializer_spec.rb index f72268b..79462c5 100644 --- a/spec/serializers/alchemy/json_api/element_serializer_spec.rb +++ b/spec/serializers/alchemy/json_api/element_serializer_spec.rb @@ -8,11 +8,10 @@ :alchemy_element, autogenerate_ingredients: true, tag_list: "Tag1,Tag2", - nested_elements: [nested_element], parent_element: parent_element ) end - let(:nested_element) { FactoryBot.create(:alchemy_element) } + let!(:nested_element) { FactoryBot.create(:alchemy_element, parent_element: element) } let(:parent_element) { FactoryBot.create(:alchemy_element) } let(:options) { {} } From 0eb4167cdfcaa0e820c120799d18a4e1899e0915 Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Thu, 12 Mar 2026 11:19:54 +0100 Subject: [PATCH 3/4] CI: Test Alchemy main branch only We use features from the upcoming 8.2 version of alchemy --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5eaf11a..16dff2c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: alchemy_branch: - - 8.1-stable + - main ruby: - "3.2" - "3.3" From a2e65856ee18234e9eecad14ba28e910b547106d Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Thu, 12 Mar 2026 12:06:46 +0100 Subject: [PATCH 4/4] feat: Only support Alchmey 8.2 and above We use features for Alchemy 8.2+ --- alchemy-json_api.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alchemy-json_api.gemspec b/alchemy-json_api.gemspec index 1cfb874..dd98a8c 100644 --- a/alchemy-json_api.gemspec +++ b/alchemy-json_api.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.files = Dir["{app,config,db,lib}/**/*", "LICENSE", "Rakefile", "README.md"] - spec.add_dependency "alchemy_cms", [">= 8.1.0.a", "< 9"] + spec.add_dependency "alchemy_cms", [">= 8.2.0.a", "< 9"] spec.add_dependency "jsonapi.rb", [">= 1.6.0", "< 2.2"] spec.add_development_dependency "factory_bot"