プラグインシステムを使うことで、機能をRocketeerに加えたり、シンプルに一般的なタスクを再利用可能なモジュールにまとめることができます。プラグインはその中心に、Rocketeer\Abstracts\AbstractPlugin
抽象化クラスを継承します。
プラグインを追加するためには、rocketeer plugin:install <package>
コマンドを呼び出す必要があります。例えば rocketeer plugin:install anahkiasen/rocketeer-slack
のように、パッケージはパッケージのPackagistかGithubハンドルで始まります。
追加を終えたら、プラグインのクラスを、.rocketeer/config.php
のplugins
配列に加えます。
'plugins' => array(
'Rocketeer\Plugins\Slack\RocketeerSlack',
),
続いて、多くの場合ではプラグインの設定をする必要があります。そのために、その設定をrocketeer plugin:publish <package>
命令を使ってユーザーランドに書き出したいと思います。ここでは、例として rocketeer plugin:publish anahkiasen/rocketeer-slack
を呼びます。
これは、すべてのプラグインの設定を入れ込んだ.rocketeer/plugins/rocketeers/rocketeer-slack
フォルダを作成します。
およそほとんどのプラグインは、そのクラスにregister(Container $app)
とonQueue(TasksQueue $queue)
という二つのメソッドをもちます。
- 一つ目はRocketeerのコンテナに、最終的なインスタンスをバインドするのに使用されます。これは、それがオーバーライドされた時に最終的にコンテナをリターンする必要がある場合に適したメソッドです。
- 二つ目はアクションまたはタスクをロケッティアに追加するのに使います。TaskQueueクラスはロケッティアの外観の背後のクラスであり、あなたがよく知っているメソッドが有効です。
$queue->before('deploy', ...)
や$queue->add('MyCustomTask')
などです。
これは現在のCampfireプラグインの非常に簡単にした一つのバージョン例です。依存関係としてrcrowe/Campfire
を使っています。
use rcrowe\Campfire;
use Illuminate\Container\Container;
use Rocketeer\Services\Tasks\TasksQueue;
use Rocketeer\Abstracts\AbstractPlugin;
class RocketeerCampfire extends AbstractPlugin
{
/**
* Bind additional classes to the Container
*
* @param Container $app
*
* @return void
*/
public function register(Container $app)
{
$app->bind('campfire', function ($app) {
return new Campfire(['domain' => '...', 'key' => '...', 'room' => '...']);
});
return $app;
}
/**
* Register Tasks with Rocketeer
*
* @param TasksQueue $queue
*
* @return void
*/
public function onQueue(TasksQueue $queue)
{
$queue->after('deploy', function ($task) {
$application = $task->rocketeer->getApplicationName();
$task->campfire->send($application. ' was deployed!');
});
}
}
見ての通り、どこかにとっておきプロジェクトをまたいで使うものとして、プラグインは 非常に シンプルなものです。
プラグインはconfig
フォルダをプラグインのsrc
フォルダの下に作成することで、その設定をもつことができます。クラスの中でパスをセットする必要があります。例ではコンストラクタの中です。
public function __construct()
{
$this->configurationFolder = __DIR__.'/../../config';
}
その作成したフォルダの中に、オプションをPHP配列として入れるための、config.php
ファイルを作成します。あなたのプラグインのための設定はmy-plugin::
名前空間下のあなたのタスクの中のConfigクラスにあります。例えば $task->config->get('rocketeer-hipchat::myoption')
と実行することで、設定を取得できます。