2つの!Composer で CakePHP 2 のプラグインを管理したいのにわからなかったこと!
- Composer で管理できる CakePHP プラグインの調べ方がわからなかった。
- プラグインの名前、バージョンをどのように記述すればよいかわからなかった。
Composer で管理できる CakePHP 2 のプラグインを調べる方法!そして composer.json への記述方法
- Packagist で検索する。
- 探し方は、プラグインの GitHub ページにあるリポジトリ名またはオーナー名で検索する。
composer.json に適当に CakePHP プラグイン設定を書いてみて失敗した風景><
[root@localhost cake1]# php composer.phar update
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - The requested package cakephp/cakeplus could not be found in any version, there may be a typo in the package name.
Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
[root@localhost cake1]#
このエラーが出た時の composer.json はこんな感じです。CakePHP のプラグインも Composer で管理できると聞きかじってでもどうすれば?という状態で適当に書いていました><。。。
{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.4.9",
        "cakephp/debug_kit": "2.2.*",
        "cakephp/cakeplus": "*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}
DebugKit のような超有名で、プラグインページで Composer でのインストール方法が案内されているプラグインなら問題ありません。
手順に従って、Composer を update するだけですもの。
問題は、Composer でのインストール方法が案内されていない CakePHP プラグインで、そもそも Composer で管理できるのか?そして、具体的に composer.json にどのように記述すればよいのか?ですわ。
調べていたらアッサリ解決いたしました♪
Composer で扱えるかどうかの判断、そしてインストール方法!cakeplus を具体例に♪
たとえば、ichikaway さまの cakeplus を Composer で管理したい!とします。
README には Composer でのインストール方法がありません。
Composer で扱えるかどうかの判断、そしてインストール方法はこちらのサイトにございます!
「ichikaway」で検索してみますと、Packages の検索結果として、「ichikaway/cakeplus」が表示されました!
これをクリックして詳細ページへと移動します。
ページの require: に続く部分が composer.json に記述する部分ですの!具体的には「”ichikaway/cakeplus”: “2.0.*@dev”」となりますわね♪
早速 composer.json に記述いたします。
{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.4.9",
        "cakephp/debug_kit": "2.2.*",
        "ichikaway/cakeplus": "2.0.*@dev"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}
そして update しますと、、、
php composer.phar update
次のように無事アップデートできました♪
[root@localhost cake1]# php composer.phar update
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Updating dependencies (including require-dev)
  - Installing ichikaway/cakeplus (2.0.x-dev a273a8a)
    Cloning a273a8aabdca1b245764a489abd16185afb8bc86
Failed to download ichikaway/cakeplus from source: Failed to clone git@github.com:ichikaway/cakeplus.git, git was not found, check that it is installed and in your PATH env.
sh: git: コマンドが見つかりません
Now trying to download from dist
  - Installing ichikaway/cakeplus (2.0.x-dev a273a8a)
    Downloading: 100%         
Writing lock file
Generating autoload files
[root@localhost cake1]#
ちょっとエラーが出ておりますけれども、そうでした。
わたくし、git はインストールしておりませんでしたわ><、てへ。でも、調べてみますと無事にプラグインをダウンロードできていたようですの♪
これにて完了です♪
おわりに
こちらでエラーに体当たりながらなんとか CakePHP をインストールできましたの。
つづいてプラグインも、、、という時にやっぱりまたエラー><。
でも、何とかなりましたわ、えへへ。
嬉しく存じます。
ただ、Composer の Pacagist の検索結果に出てこないプラグインも当然ございますわね。。。その場合、やはり Composer での管理は諦めて自力で面倒を見るしか無いのかしら。。。
以上です。




