Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ingredients relations #108

Merged
merged 4 commits into from
May 15, 2024
Merged

Conversation

mamhoff
Copy link
Contributor

@mamhoff mamhoff commented May 7, 2024

This allows the gem to touch ingredients if taxons or products or variants update. Useful for cache invalidation!

We want to be able to use decorators.
@mamhoff mamhoff force-pushed the add-ingredients-relations branch from 7517302 to f9c4aab Compare May 7, 2024 11:57
mamhoff added a commit to mamhoff/alchemy_cms that referenced this pull request May 7, 2024
Currently, it's hard for us to invalidate caches for Alchemy pages when
content that's referenced through ingredients with related objects
changes.

For example, in a situation where a user combines Alchemy and Solidus
using the `alchemy_solidus` gem, a page's cache key does not update when
a product that's referenced through a SpreeProduct ingredient changes.

There's a PR up on the alchemy_solidus gem that touches ingredients in
these situations, and with this change, that touching can be used for
breaking caches. [1]

[1](AlchemyCMS/alchemy-solidus#108)
mamhoff added a commit to mamhoff/alchemy_cms that referenced this pull request May 8, 2024
Currently, it's hard for us to invalidate caches for Alchemy pages when
content that's referenced through ingredients with related objects
changes.

For example, in a situation where a user combines Alchemy and Solidus
using the `alchemy_solidus` gem, a page's cache key does not update when
a product that's referenced through a SpreeProduct ingredient changes.

There's a PR up on the alchemy_solidus gem that touches ingredients in
these situations, and with this change, that touching can be used for
breaking caches. [1]

In the unlikely event the requested version is not available, we use the
page's updated_at timestamp as a fallback.

[1](AlchemyCMS/alchemy-solidus#108)
mamhoff added a commit to mamhoff/alchemy_cms that referenced this pull request May 8, 2024
Currently, it's hard for us to invalidate caches for Alchemy pages when
content that's referenced through ingredients with related objects
changes.

For example, in a situation where a user combines Alchemy and Solidus
using the `alchemy_solidus` gem, a page's cache key does not update when
a product that's referenced through a SpreeProduct ingredient changes.

There's a PR up on the alchemy_solidus gem that touches ingredients in
these situations, and with this change, that touching can be used for
breaking caches. [1]

In the unlikely event the requested version is not available, we use the
page's updated_at timestamp as a fallback.

[1](AlchemyCMS/alchemy-solidus#108)
mamhoff added a commit to mamhoff/alchemy_cms that referenced this pull request May 8, 2024
Currently, it's hard for us to invalidate caches for Alchemy pages when
content that's referenced through ingredients with related objects
changes.

For example, in a situation where a user combines Alchemy and Solidus
using the `alchemy_solidus` gem, a page's cache key does not update when
a product that's referenced through a SpreeProduct ingredient changes.

There's a PR up on the alchemy_solidus gem that touches ingredients in
these situations, and with this change, that touching can be used for
breaking caches. [1]

In the unlikely event the requested version is not available, we use the
page's updated_at timestamp as a fallback.

[1](AlchemyCMS/alchemy-solidus#108)
mamhoff added a commit to mamhoff/alchemy_cms that referenced this pull request May 13, 2024
Currently, it's hard for us to invalidate caches for Alchemy pages when
content that's referenced through ingredients with related objects
changes.

For example, in a situation where a user combines Alchemy and Solidus
using the `alchemy_solidus` gem, a page's cache key does not update when
a product that's referenced through a SpreeProduct ingredient changes.

There's a PR up on the alchemy_solidus gem that touches ingredients in
these situations, and with this change, that touching can be used for
breaking caches. [1]

In the unlikely event the requested version is not available, we use the
page's updated_at timestamp as a fallback.

The core of the logic has been moved to a new `#last_modified_at`
method that can be used for the last-modified header in HTTP responses.
[1](AlchemyCMS/alchemy-solidus#108)
@mamhoff mamhoff force-pushed the add-ingredients-relations branch from f9c4aab to d6544ed Compare May 13, 2024 16:41
This gets us an `Spree::Taxon#alchemy_ingredients` relation which we can
use to invalidate caches.
@mamhoff mamhoff force-pushed the add-ingredients-relations branch from d6544ed to 3f6643f Compare May 15, 2024 11:22
Copy link
Member

@tvdeyen tvdeyen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing 🧁

@tvdeyen tvdeyen enabled auto-merge May 15, 2024 11:25
@tvdeyen tvdeyen merged commit 02a5a92 into AlchemyCMS:main May 15, 2024
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants