Skip to content

Latest commit

 

History

History
148 lines (110 loc) · 6.58 KB

Plugins.md

File metadata and controls

148 lines (110 loc) · 6.58 KB

プラグイン

プラグインシステムを使うことで、機能をRocketeerに加えたり、シンプルに一般的なタスクを再利用可能なモジュールにまとめることができます。プラグインはその中心に、Rocketeer\Abstracts\AbstractPlugin 抽象化クラスを継承します。

プラグインの追加

プラグインを追加するためには、rocketeer plugin:install <package>コマンドを呼び出す必要があります。例えば rocketeer plugin:install anahkiasen/rocketeer-slack のように、パッケージはパッケージのPackagistかGithubハンドルで始まります。

追加を終えたら、プラグインのクラスを、.rocketeer/config.phpplugins配列に加えます。

'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') と実行することで、設定を取得できます。