Skip to content

Commit d62544e

Browse files
committed
[FrameworkBundle] Provide $buildDir when running CacheWarmer to build read-only resources
Signed-off-by: Quentin Devos <4972091+Okhoshi@users.noreply.github.com>
1 parent 80c17e4 commit d62544e

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ CHANGELOG
2929
* Add support for relative URLs in BrowserKit's redirect assertion
3030
* Change BrowserKitAssertionsTrait::getClient() to be protected
3131
* Deprecate the `framework.asset_mapper.provider` config option
32+
* Provide `$buildDir` when running `CacheWarmer` to build read-only resources
3233

3334
6.3
3435
---

src/Symfony/Bundle/FrameworkBundle/CacheWarmer/ConfigBuilderCacheWarmer.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ public function __construct(KernelInterface $kernel, LoggerInterface $logger = n
4040
/**
4141
* @return string[]
4242
*/
43-
public function warmUp(string $cacheDir): array
43+
public function warmUp(string $cacheDir, string $buildDir = null): array
4444
{
45-
$generator = new ConfigBuilderGenerator($this->kernel->getBuildDir());
45+
if (null === $buildDir) {
46+
return [];
47+
}
48+
49+
$generator = new ConfigBuilderGenerator($buildDir);
4650

4751
foreach ($this->kernel->getBundles() as $bundle) {
4852
$extension = $bundle->getContainerExtension();
@@ -79,6 +83,6 @@ private function dumpExtension(ExtensionInterface $extension, ConfigBuilderGener
7983

8084
public function isOptional(): bool
8185
{
82-
return true;
86+
return false;
8387
}
8488
}

src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ private function warmupOptionals(string $cacheDir, string $warmupDir, SymfonySty
245245
$warmer = $kernel->getContainer()->get('cache_warmer');
246246
// non optional warmers already ran during container compilation
247247
$warmer->enableOnlyOptionalWarmers();
248-
$preload = (array) $warmer->warmUp($cacheDir, $io);
248+
$preload = (array) $warmer->warmUp($cacheDir, null, $io);
249249

250250
if ($preload && file_exists($preloadFile = $warmupDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
251251
Preloader::append($preloadFile, $preload);

src/Symfony/Bundle/FrameworkBundle/Command/CacheWarmupCommand.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ protected function execute(InputInterface $input, OutputInterface $output): int
6666
$this->cacheWarmer->enableOptionalWarmers();
6767
}
6868

69-
$preload = $this->cacheWarmer->warmUp($cacheDir = $kernel->getContainer()->getParameter('kernel.cache_dir'));
69+
$preload = $this->cacheWarmer->warmUp($kernel->getContainer()->getParameter('kernel.cache_dir'));
7070

71-
if ($preload && file_exists($preloadFile = $cacheDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
71+
if ($preload && file_exists($preloadFile = $kernel->getContainer()->getParameter('kernel.build_dir').'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
7272
Preloader::append($preloadFile, $preload);
7373
}
7474

src/Symfony/Bundle/FrameworkBundle/Tests/CacheWarmer/ConfigBuilderCacheWarmerTest.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
1616
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
1717
use Symfony\Component\Config\Loader\LoaderInterface;
18+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1819
use Symfony\Component\DependencyInjection\ContainerBuilder;
1920
use Symfony\Component\Filesystem\Filesystem;
2021
use Symfony\Component\HttpKernel\Kernel;
22+
use Symfony\Component\HttpKernel\KernelInterface;
2123

2224
class ConfigBuilderCacheWarmerTest extends TestCase
2325
{
@@ -39,7 +41,7 @@ protected function tearDown(): void
3941

4042
public function testBuildDirIsUsedAsConfigBuilderOutputDir()
4143
{
42-
$kernel = new class($this->varDir) extends Kernel {
44+
$kernel = new class($this->varDir) extends Kernel implements CompilerPassInterface {
4345
private $varDir;
4446

4547
public function __construct(string $varDir)
@@ -75,12 +77,25 @@ public function registerContainerConfiguration(LoaderInterface $loader): void
7577
]);
7678
});
7779
}
80+
81+
public function process(ContainerBuilder $container): void
82+
{
83+
$container->removeDefinition('config_builder.warmer');
84+
}
7885
};
7986
$kernel->boot();
8087

88+
self::assertDirectoryDoesNotExist($kernel->getBuildDir().'/Symfony');
89+
self::assertDirectoryDoesNotExist($kernel->getCacheDir().'/Symfony');
90+
8191
$warmer = new ConfigBuilderCacheWarmer($kernel);
8292
$warmer->warmUp($kernel->getCacheDir());
8393

94+
self::assertDirectoryDoesNotExist($kernel->getBuildDir().'/Symfony');
95+
self::assertDirectoryDoesNotExist($kernel->getCacheDir().'/Symfony');
96+
97+
$warmer->warmUp($kernel->getCacheDir(), $kernel->getBuildDir());
98+
8499
self::assertDirectoryExists($kernel->getBuildDir().'/Symfony');
85100
self::assertDirectoryDoesNotExist($kernel->getCacheDir().'/Symfony');
86101
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy