Skip to content
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

プラグインの依存解決の機構の実装 #2034

Closed
Yangsin opened this issue Jan 13, 2017 · 4 comments
Closed

プラグインの依存解決の機構の実装 #2034

Yangsin opened this issue Jan 13, 2017 · 4 comments
Labels
document Improvements or additions to documentation experimental Status: discussion
Milestone

Comments

@Yangsin
Copy link

Yangsin commented Jan 13, 2017

課題・希望

  • プラグインの振る舞いを変えるためのプラグイン、本体バージョンとプラグインバージョンの依存関係など、プラグインの依存解決を行いたい場合、アプリケーション側で解決する仕様を持っていない
  • 3.0.12でのログ機構のような本体のバージョン差異をプラグインでここに対応することをさけたい
  • ComposerやPackagistの仕組みを使うにはソースコードの公開などの問題で対応できないケースにも対応する必要がある

その他関連) #2019

なんか関連するかも?) #1648 #1543

検討方針

EC-CUBEのオーナーズストアにPackagist のようなリポジトリとしての仕組みをもたし、オーナーズストアで提供されているプラグインについて、依存解決を行えるようにしていく

マイルストーン

実現可能であれば3.0.xでの実現も検討したい

@kiy0taka
Copy link
Contributor

Composerからの利用方法

Composerからはプラグインのインストール/削除ができます。プラグインの有効化/無効化については管理画面から行います。

EC-CUBEリポジトリの追加

EC-CUBEリポジトリを使ってプラグインの依存管理をするために、EC-CUBEインストールディレクトリ直下のcomposer.jsonにEC-CUBEリポジトリの設定を追加します。以下の<認証キー>/<サイトURL>/<EC-CUBEバージョン>を変更してコマンドを実行してください。

$ php composer.phar config repositories.eccube composer https://repo.ec-cube.net
$ php composer.phar config repositories.eccube.options '{
    "http": {
        "header": [
            "X-ECCUBE-KEY: <認証キー>",
            "X-ECCUBE-URL: <サイトURL>",
            "X-ECCUBE-VERSION: <EC-CUBEバージョン>"
        ]
    }
}'

現時点(2017/02/24)ではテスト用の認証キーだけしか利用できませんので以下のコマンドで利用できます。

$ php composer.phar config repositories.eccube composer https://alpha-repo.ec-cube.net
$ php composer.phar config repositories.eccube.options '{
    "http": {
        "header": [
            "X-ECCUBE-KEY: 3f28c8fdea1a47734e9c2dc6f910abbec32db08f",
            "X-ECCUBE-URL: http://localhost",
            "X-ECCUBE-VERSION: 3.0.13"
        ]
    }
}'

composer.jsonに以下の内容が追記されます。

"repositories": {
    "eccube": {
        "type": "composer",
        "url": "https://alpha-repo.ec-cube.net",
        "options": {
            "http": {
                "header": ["X-ECCUBE-KEY: 3f28c8fdea1a47734e9c2dc6f910abbec32db08f", "X-ECCUBE-URL: http://localhost", "X-ECCUBE-VERSION: 3.0.13"]
            }
        }
    }
}

プロジェクトのcomposer.jsonに入れたくない場合は、configコマンド実行時に--globalオプションを指定してComposerのグローバル設定に追加してください。

インストール

プラグインのインストールはComposerのrequireコマンドを使用します。メーカ管理プラグインをインストールするときは以下のコマンドを実行します。Composerによって依存するプラグインもインストールされます。

$ php composer.phar require ec-cube/Maker

現時点(2017/02/24)では以下の公式プラグインがリポジトリから利用できるようになっています。

名称 パッケージ名 バージョン
カテゴリーコンテンツ ec-cube/CategoryContent 1.0.0
クーポン ec-cube/Coupon 2.0.0
EC-CUBE Web API ec-cube/EccubeApi 1.0.3
リスティング広告 ec-cube/ListingAdCsv 1.0.1
メルマガ管理 ec-cube/MailMagazine 1.0.0
メール設定 ec-cube/MailTemplateEditor 1.0.0
メーカー管理 ec-cube/Maker 1.0.0
ポイント ec-cube/Point 1.0.0
おすすめ順登録 ec-cube/ProductPriority 1.0.0
商品レビュー ec-cube/ProductReview 1.0.0
おすすめ商品 ec-cube/Recommend 2.0.0
関連商品 ec-cube/RelatedProduct 1.0.0
売上集計 ec-cube/SalesReport 1.0.0

また、プラグイン同士の依存管理のテスト用に以下のプラグインをリポジトリに登録しています。

パッケージ名 バージョン 備考
ec-cube/Foo 1.0.0
ec-cube/Bar 1.0.0 ec-cube/Fooに依存しているパッケージ

有効化/無効化

プラグインの有効化/無効化は管理画面から行います。

削除

プラグインを削除するにはComposerのremoveコマンドを実行します。Composerによって依存するプラグインも削除されます。

$ php composer.phar remove ec-cube/Maker

プラグイン側の設定方法

他のライブラリや他のプラグインの機能を利用する場合、プラグインのディレクトリ直下にcomposer.jsonを配置する必要があります。依存関係が不要なプラグインの場合は、composer.jsonを作成しなくても構いません。

composer.json仕様

最小限の設定

プラグインに最低限必要な情報を記述したcomposer.jsonは以下のようなものになります。プラグインにcomposer.jsonがない場合は、EC-CUBEリポジトリに以下の内容が自動的に登録されます。

{
    "name": "ec-cube/Maker",
    "version": "1.0.0",
    "type": "eccube-plugin",
    "require": {
        "ec-cube/plugin-installer": "~1.0"
    },
    "extra": {
        "code": "Maker"
    }
}
項目名
name "ec-cubbe/プラグインコード"
version プラグインのバージョン
type "eccube-plugin"
require 必ず、"ec-cube/plugin-installer": "0.0.1"に依存するようにしてください。他に利用したいパッケージがある場合は追記してください。
extra "code": "プラグインコード"

@kiy0taka
Copy link
Contributor

Composerから利用できるテスト用のプラグインリポジトリ(alpha-repo.ec-cube.net)を作成したので利用方法を追記しました。

@Yangsin Yangsin modified the milestones: 3.1.0, 3.0.x Mar 7, 2017
@Yangsin
Copy link
Author

Yangsin commented Mar 7, 2017

レンタルサーバーやIIS環境でも同様に利用可能か確認が必要です。

  • 3.0ベースで管理画面のオーナーズストアの挙動を変更したアプリをレンタルサーバーで検証
    • さくらインターネット
    • X-SERVER
    • Kagoya
    • CPI
    • ロリポップ

@kiy0taka
Copy link
Contributor

kiy0taka commented Mar 9, 2017

サーバー プラン PHPバージョン Server API 検証1 exec 検証2 Composer API
さくらインターネット スタンダード 5.6.30 CGI/FastCGI ○ ※1
Kagoya 共用サーバーS20 5.6.30 Apache 2.0 Handler ×
CPI ACE01 5.6.19 CGI/FastCGI △ ※2 ○ ※1
X-SERVER X10プラン 5.6.24 CGI/FastCGI × ○ ※1
ロリポップ スタンダードプラン 7.1.1 Apache 2.0 Handler × ○ ※1
  • exec - 別プロセスでComposerコマンドを実行
  • ComposerAPI - ComposerライブラリのAPIを利用して実行
  • ※1 php.inimemory_limit=500Mを設定
  • ※2 phpコマンドのパスを指定した場合

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
document Improvements or additions to documentation experimental Status: discussion
Projects
None yet
Development

No branches or pull requests

3 participants