-
Notifications
You must be signed in to change notification settings - Fork 645
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
プラグインでSymfony bundle利用時のアップデートについて #4960
Comments
メモ(とりあえず考えを書いています)無改造であればマイナーバージョンのバージョンアップと同様の手順でおおよそアップデート可能かと思います。 カスタマイズ方法による対応方法の違い
バージョン
package-api (オーナーズストア側) の改修
|
具体的なバージョンアップ手順(暫定)前準備(順不同)
4.0.6 -> 4.1.0 へのバージョンアップ
EC-CUBEのソースファイルを 4.1.0 に置き換えマイナーバージョンと変更なし
個別ファイル差し替え(暫定)
composer.json/composer.lockの更新以下のコマンドをプラグインコードが小文字になるように対応すればいける(気がする)
|
Git を利用できる方は、 Git でのバージョンアップがおすすめです
本体のロジックをオーバーライドしている場合は、手作業でマージする必要があります 追加で、 app/template 以下の twig テンプレートも必要に応じてマージする必要があります |
コメントありがとうございます! |
検証手順のメモです。 WebApiプラグインを準備
ファイル差し替え後にbundle がないためコマンドが使えなくなる
関連商品プラグインを準備
EC-CUBE 4.0 をインストールcomposer1 の
EC-CUBE 4.1 へのアップデート別ディレクトリに EC-CUBE 4.1 を準備しておく ファイルの差し替え
残課題
|
vendorの差し替え時に削除ではなく、上書きにする。
こちらの実行時に不要なファイルはこちらで削除される想定。
composer 自体が動かないと思うので、事前に手動で変更 or アップデートプラグインの冒頭で変更 |
作業中 cp -rf ../ec-cube41/vendor ./ |
マイナーバージョンアップの場合は |
メジャーバージョンアップの際はプラグインを無効化してから実施する手順とする |
プラグインを無効にしてからアップデートをしてみましたが、同じエラーが発生しました。 Symfony bundle の読み込みが早すぎて Line 68 in 6ec8440
|
Symfony bundle の読み込みを回避してみましたが、
foreach ($plugins as $code) {
$pluginBundles = $pluginDir.'/'.$code.'/Resource/config/bundles.php';
if (file_exists($pluginBundles)) {
$contents = require $pluginBundles;
foreach ($contents as $class => $envs) {
if (isset($envs['all']) || isset($envs[$this->environment])) {
+ if (class_exists($class)) {
yield new $class();
+ }
}
}
}
}
|
無効になっているプラグインのbundleとconfigを読み込まないようにしてみましたが、
助けてください 😢 |
@okazy この状態で composer dumpautoload を実行してみるとどうでしょうか? |
ありがとうございます。 |
APP_ENV=prod で実行すると少しエラーが変わりました。
|
@okazy composer の classloader に登録されているはずのファイルが見つからないって言っているので、以下の手順でどうでしょう? プラグインは無効化しておく
|
@nanasess
Trikoder の bundle と services.yaml 読み込み回避した結果が以下です。
|
アップデートプラグインで回避されていたので、真似してやってみます。 |
次は Symfony 4 で追加された interface でエラーとなりました。
|
回避方法案
いずれの場合もアップデートの難易度はかなり上がる。 |
API プラグインが同梱されている 4.1-beta2 のパッケージから vendor をコピーすることでバージョンアップが可能なことを確かめました。 |
@okazy
|
bundleを使っているプラグインがある場合の手順を記載しました |
概要(Overview)
EC-CUBE 4.0 -> 4.1 へのアップデートについてこちらの Issue で議論していきます。
EC-CUBE 4.1 Roadmap #4603 にもある通り、4.0 を 4.1 へバージョンアップできるように互換性を考慮して開発が進められています。
期待する内容(Expect) or 要望 (Requirement)
4.0 でのマイナーバージョンアップと同様の難易度で 4.0 -> 4.1 のバージョンアップができる。
技術面の補足(調査中)
name
をbin/console eccube:composer:require-already-installed
内で小文字に変更する改修が必要。環境 (environment)
関連情報 (Ref)
EC-CUBE 4.1 Roadmap #4603
EC-CUBE 4.1 機能開発方針 #4901
The text was updated successfully, but these errors were encountered: