私は Open Atrium 2 に取り組んでおり、その上にいくつかの統合機能を構築できるように、初期インストールに Guzzle を含めたいと思います。
通常、ライブラリを含めることは、drush makeファイルにライブラリを追加することを意味しますが、Guzzleは次の理由によりさらに複雑です。
どうすればこれを実現できますか?すべての依存関係を含む事前にバンドルされ、すぐに使用できるパッケージはどこかにあります。その場合、Drupal.orgのホワイトリストに登録することを要求してそれを使用できますか?または、sites/all/libraries
に配置できる一連のファイルを含めるだけでなく、Guzzleトリッカーをインストールしていますか?
何か案は?
私はcomposer私のマシンでシステム全体を無効にし、メイクファイルを作成し、それが正常に動作しますDrupal 7コアと次のモジュール:composer、composer_autoload&guzzle。
これは platform.make の内容です
$Id$
; API
api = 2
; Core
core = 7.x
; Drupal project.
projects[drupal][type] = core
projects[drupal][version] = 7.x
projects[drupal][download][type] = git
projects[drupal][download][branch] = 7.x
; Modules
projects[composer] = 1.x-dev
projects[] = composer_autoload
projects[] = guzzle
Composer Manager を使用すると、PHP Composerを介して管理されるライブラリとその依存関係をプロジェクトごとにインストールできます。
したがって(モジュールの README.md のとおり):
モジュールに
composer.json
ファイルが含まれている場合、ルートディレクトリでcomposer install
を実行すると、すべての要件と依存関係が独自のオートローダーを使用してvendor/
ディレクトリにダウンロードされます。
Guzzleチャレンジは README.md で説明されています:
課題を強調するために、
module_a
には"guzzle/http": "3.7.*"
が必要であり、module_b
には"guzzle/service": ">=3.7.0"
が必要であるとします。この投稿の時点で、各モジュールのディレクトリでcomposer install
を実行すると、guzzle/http
のバージョン3.7.4のmodule_a
のvendor/
ディレクトリにインストールされ、バージョン3.8.1のguzzle/service
をmodule_b
のvendor/
ディレクトリにインストールしています。
guzzle/service
はguzzle/http
に依存しているため、guzzle/http
が重複してインストールされています。さらに、インストールごとに異なるバージョンのguzzle/http
コンポーネントを使用します(module_a
の場合は3.7.4、module_b
の場合は3.8.1)。module_a
のオートローダーが最初に登録されている場合、\Guzzle\Service\Client
のバージョン3.8.1が\Guzzle\Http\Client
のバージョン3.7.4を拡張している状況になります。
Composer Manager's Solutionを使用することにより、有効な各モジュールのルートディレクトリですべてのcomposer.json
ファイルを見つけ、それらを統合されたcomposer.json
ファイルに正常にマージします(これにより、コードの重複を防ぎます)およびバージョンの不一致)。
上記の使用例では、Composerは
guzzle/http
とguzzle/service
の両方をバージョン3.7.4に解決します。これは、より一貫性があり、信頼できる環境です。
したがって、質問に答えるために:はい、それをsites/all/vendor
のDrupalインストールに含めることができます。
sites/all/vendor/composer
sites/all/vendor/guzzlehttp