From 3947849fd0bebf3220e8b712ac9cfbe41c9fc72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=AE=E3=81=B6?= Date: Fri, 19 Jul 2019 17:42:07 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=E3=83=A6=E3=83=BC=E3=82=B6=E3=83=BC?= =?UTF-8?q?=E7=8B=AC=E8=87=AA=E3=83=97=E3=83=A9=E3=82=B0=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E3=82=A2=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=82=82=E3=82=B9=E3=82=AD=E3=83=BC=E3=83=9E?= =?UTF-8?q?=E3=81=8C=E3=82=A2=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=20=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Service/PluginService.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index 885e8530373..309d1892c00 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -747,6 +747,8 @@ public function updatePlugin(Plugin $plugin, $meta) $em->persist($plugin); + $this->generateProxyAndUpdateSchema($plugin, $config); + if ($plugin->isInitialized()) { $this->callPluginManagerMethod($meta, 'update'); } From f9e6436621d569ac02308e0c8c683f539eeeb75e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=AE=E3=81=B6?= Date: Fri, 19 Jul 2019 17:50:12 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E5=A4=89=E6=95=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Service/PluginService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index 309d1892c00..339578be660 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -747,7 +747,7 @@ public function updatePlugin(Plugin $plugin, $meta) $em->persist($plugin); - $this->generateProxyAndUpdateSchema($plugin, $config); + $this->generateProxyAndUpdateSchema($plugin, $meta); if ($plugin->isInitialized()) { $this->callPluginManagerMethod($meta, 'update'); From 43100b5899f1b555bbbf31810f5e6380b96dfc57 Mon Sep 17 00:00:00 2001 From: kiy0taka Date: Fri, 25 Oct 2019 18:31:03 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E3=83=97=E3=83=A9=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=A2=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=AE=E3=83=86=E3=82=B9=E3=83=88=E3=81=A7=E3=82=B9=E3=82=AD?= =?UTF-8?q?=E3=83=BC=E3=83=9E=E6=9B=B4=E6=96=B0=E3=81=8C=E7=99=BA=E7=94=9F?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=B1=E3=83=BC=E3=82=B9=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codeception/_data/plugins/Horizon-1.0.1.tgz | Bin 2482 -> 2281 bytes codeception/acceptance/EA10PluginCest.php | 14 ++++++++++++++ 2 files changed, 14 insertions(+) diff --git a/codeception/_data/plugins/Horizon-1.0.1.tgz b/codeception/_data/plugins/Horizon-1.0.1.tgz index 0633c80942df961ca3cd7dd13b96fc71de6f2fa5..e8d73d8e2d807bce9ee9c4ffd071983bc67e7279 100644 GIT binary patch literal 2281 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 diff --git a/codeception/acceptance/EA10PluginCest.php b/codeception/acceptance/EA10PluginCest.php index 67a825a467f..16de48758a3 100644 --- a/codeception/acceptance/EA10PluginCest.php +++ b/codeception/acceptance/EA10PluginCest.php @@ -793,6 +793,13 @@ public function __construct(AcceptanceTester $I) $this->traits['\Plugin\Horizon\Entity\CartTrait'] = 'src/Eccube/Entity/Cart'; } + public function アップデート() + { + // アップデートで新たしいカラムが追加される + $this->columns[] = 'dtb_dash.new_column'; + return parent::アップデート(); + } + public static function start(AcceptanceTester $I) { return new self($I); @@ -810,6 +817,13 @@ public function __construct(AcceptanceTester $I) $this->traits['\Plugin\Horizon\Entity\CartTrait'] = 'src/Eccube/Entity/Cart'; } + public function アップデート() + { + // アップデートで新たしいカラムが追加される + $this->columns[] = 'dtb_dash.new_column'; + return parent::アップデート(); + } + public static function start(AcceptanceTester $I) { $result = new self($I); From c2c63c452b5f106dd48ac3af3bf2918c5335e5c7 Mon Sep 17 00:00:00 2001 From: kiy0taka Date: Wed, 30 Oct 2019 08:40:30 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=E3=82=AD=E3=83=A3=E3=83=83=E3=82=B7?= =?UTF-8?q?=E3=83=A5=E3=81=95=E3=82=8C=E3=81=9FDoctrine=E3=83=A1=E3=82=BF?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=81=A7=E6=AD=A3=E3=81=97=E3=81=8F?= =?UTF-8?q?=E3=82=B9=E3=82=AD=E3=83=BC=E3=83=9E=E3=81=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Service/PluginService.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Eccube/Service/PluginService.php b/src/Eccube/Service/PluginService.php index 339578be660..96d817f91b2 100644 --- a/src/Eccube/Service/PluginService.php +++ b/src/Eccube/Service/PluginService.php @@ -282,6 +282,9 @@ public function postInstall($config, $source) */ public function generateProxyAndUpdateSchema(Plugin $plugin, $config, $uninstall = false, $saveMode = true) { + // キャッシュしたメタデータを利用しないようにキャッシュドライバを外しておく + $this->entityManager->getMetadataFactory()->setCacheDriver(null); + $this->generateProxyAndCallback(function ($generatedFiles, $proxiesDirectory) use ($saveMode) { $this->schemaService->updateSchema($generatedFiles, $proxiesDirectory, $saveMode); }, $plugin, $config, $uninstall); From 98a1d9ccf1fa69d919eba6b39b353ced8ca0886c Mon Sep 17 00:00:00 2001 From: kiy0taka Date: Wed, 30 Oct 2019 17:14:36 +0900 Subject: [PATCH 5/5] =?UTF-8?q?E2E=E3=83=86=E3=82=B9=E3=83=88=E6=99=82?= =?UTF-8?q?=E3=81=AEdoctrine=E3=82=AD=E3=83=A3=E3=83=83=E3=82=B7=E3=83=A5?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E3=82=92prod=E3=81=A8=E5=90=8C=E3=81=98?= =?UTF-8?q?=E3=82=82=E3=81=AE=E3=81=AB=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eccube/packages/codeception/doctrine.yaml | 30 +++++++++++++++++++ codeception/acceptance/EF01TopCest.php | 10 ++++--- src/Eccube/Util/CacheUtil.php | 17 ++++++++--- 3 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 app/config/eccube/packages/codeception/doctrine.yaml diff --git a/app/config/eccube/packages/codeception/doctrine.yaml b/app/config/eccube/packages/codeception/doctrine.yaml new file mode 100644 index 00000000000..e5f04eb0bdf --- /dev/null +++ b/app/config/eccube/packages/codeception/doctrine.yaml @@ -0,0 +1,30 @@ +# https://github.com/symfony/demo/blob/master/config/packages/prod/doctrine.yaml +# https://symfony.com/doc/master/bundles/DoctrineBundle/configuration.html +doctrine: + orm: + metadata_cache_driver: + type: service + id: doctrine.app_cache_provider + query_cache_driver: + type: service + id: doctrine.app_cache_provider + result_cache_driver: + type: service + id: doctrine.app_cache_provider + second_level_cache: + region_cache_driver: + type: service + id: doctrine.app_cache_provider + +services: + doctrine.app_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.app_cache_pool' + +framework: + cache: + pools: + doctrine.app_cache_pool: + adapter: cache.app diff --git a/codeception/acceptance/EF01TopCest.php b/codeception/acceptance/EF01TopCest.php index a51d4455edc..4da7d3d8432 100644 --- a/codeception/acceptance/EF01TopCest.php +++ b/codeception/acceptance/EF01TopCest.php @@ -31,12 +31,14 @@ public function _after(\AcceptanceTester $I) private function clearDoctrineCache() { - // APP_ENV=prodで実行した際は, 直接データを投入しても反映されないため, + // APP_ENV=prod/codeceptionで実行した際は, 直接データを投入しても反映されないため, // キャッシュを削除して表示できるようにする $fs = new Symfony\Component\Filesystem\Filesystem(); - $cacheDir = __DIR__.'/../../var/cache/prod/pools'; - if ($fs->exists($cacheDir)) { - $fs->remove($cacheDir); + foreach (['prod', 'codeception'] as $env) { + $cacheDir = __DIR__."/../../var/cache/${env}/pools"; + if ($fs->exists($cacheDir)) { + $fs->remove($cacheDir); + } } } diff --git a/src/Eccube/Util/CacheUtil.php b/src/Eccube/Util/CacheUtil.php index 01ff49c2b40..eacd7687939 100644 --- a/src/Eccube/Util/CacheUtil.php +++ b/src/Eccube/Util/CacheUtil.php @@ -17,6 +17,7 @@ use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Finder\Finder; @@ -29,21 +30,30 @@ */ class CacheUtil implements EventSubscriberInterface { + + const DOCTRINE_APP_CACHE_KEY = 'doctrine.app_cache_pool'; + private $clearCacheAfterResponse = false; /** * @var KernelInterface */ protected $kernel; + /** + * @var ContainerInterface + */ + private $container; /** * CacheUtil constructor. * * @param KernelInterface $kernel + * @param ContainerInterface $container */ - public function __construct(KernelInterface $kernel) + public function __construct(KernelInterface $kernel, ContainerInterface $container) { $this->kernel = $kernel; + $this->container = $container; } /** @@ -100,7 +110,6 @@ public function forceClearCache(PostResponseEvent $event) /** * Doctrineのキャッシュを削除します. - * APP_ENV=prodの場合のみ実行されます. * * @param null $env * @@ -110,7 +119,7 @@ public function forceClearCache(PostResponseEvent $event) */ public function clearDoctrineCache() { - if ($this->kernel->getEnvironment() !== 'prod') { + if (!$this->container->has(self::DOCTRINE_APP_CACHE_KEY)) { return; } $console = new Application($this->kernel); @@ -118,7 +127,7 @@ public function clearDoctrineCache() $command = [ 'command' => 'cache:pool:clear', - 'pools' => ['doctrine.app_cache_pool'], + 'pools' => [self::DOCTRINE_APP_CACHE_KEY], '--no-ansi' => true, ];