Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3b80633

Browse files
committed
[FrameworkBundle] Provide $buildDir when running CacheWarmer to build read-only resources
Signed-off-by: Quentin Devos <[email protected]>
1 parent 00d487f commit 3b80633

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

+1
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

+7-3
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

+1-1
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

+2-2
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

+16-1
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)