You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@jasonvarga This change causes problems for us, it breaks our current implementation of file based taggable cache for which we have extended the standard "file" driver (using swayok/alternative-laravel-cache). With this change in Statamic, extending the "file" driver no longer seems possible since Statamic takes over the file driver itself.
It was a lot easier when you used your own "statamic" driver for the Stache and we could do anything we liked to the file driver.
So the question is: How can we now apply our own extensions to the "file" driver? Do you have any ideas on how to work around this or will there be a future update that makes this possible again?
Thanks for your swift reply! Yes of course I can explain in some more detail, any ideas or help on this one is very welcome!
We are binding "taggable-cache" to the service container in the register() method of one of our service providers, like this:
// Register the binding on the Service Container
$this->app->bind('taggable-cache', function() {
/** @var AlternativeFileCacheStoreWithLocks $store */
$store = app('cache')->store('file');
return $store;
});
This should return the "file" cache store that the "swayok/alternative-laravel-cache" composer package provides, because inside that package (thus out of my control) there's this method that overrides the "file" cache driver to use its store:
protected function addFileCacheDriver(CacheManager $cacheManager, bool $hasLocks): void
{
$provider = $this;
$cacheManager->extend(
$this->fileDriverName,
function (Application $app, array $cacheConfig) use ($hasLocks, $provider, $cacheManager) {
$db = new Filesystem($provider->makeFileCacheAdapter($cacheConfig));
if ($hasLocks) {
$store = new AlternativeFileCacheStoreWithLocks($db, $provider->getPrefix($cacheConfig));
} else {
$store = new AlternativeFileCacheStore($db, $provider->getPrefix($cacheConfig));
}
$store->setLogger($app->make('log'));
return $cacheManager->repository($store, $cacheConfig);
}
);
}
Unfortunately, the "fileDriverName" is hardcoded within the package and is set to "file":
protected $fileDriverName = 'file';
In Statamic 5.10.0 all works well, but when upgrading to 5.11.0 it fails because we will now get back the Statamic "file" cache store instead of the AlternativeFileCacheStoreWithLocks store when using the "taggable-cache" (through a facade).
So, I'm kinda stuck here, because both Statamic and this composer package now try to take control over the "file" cache driver and there doesn't seem to be an easy way to get them both working together. However, I need them both because our site is build in Statamic and we also have a lot depending on taggable cache (which out-of-the-box doesn't work well in Laravel, so we need this composer package for a proper implementation).
Any ideas are welcome, I haven't been able to come up with a simple work-around or proper solution for this yet...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
We have a customized file driver for the cache that will organize any Stache related keys into a simplified file structure for ease of debugging.
This would only affect your default cache store.
This PR changes it so that any store using the file driver will be changed to use our custom version. This is useful along with #10303.
We are newing up the FileStore identically to how Laravel does it now which would also fix custom
lock_pathnot working.Additionally, this PR avoids a nested
stachedirectory if you point your cache store to a directory already namedstache.The cache driver named
statamicis now deprecated in favor of just usingfile.