polidog lab++

Blog
ConsoleBundleが便利だった

ConsoleBundleが便利だった

Dec 5, 2016 | tech | symfony2

Symfony Advent Calendar 2016の5日目の記事です。

Symfonyを使っていると、Web上でコマンドを実行したくなることがあると思います。
自分でBundleを作ろうと思いましたが、検索したらBundleがありました。

CoreSphere/ConsoleBundle

やはり世の中には同じようなことを考えている方がいるんですね。

導入方法

使い方は非常に簡単です。
まずはComposerでConsoleBundleをインストールします。

$ composer require coresphere/console-bundle

次にAppKernel.phpに追記していきます。
流石に、本番環境で使うのは避けたほうがよいので、dev,testのみでBundleが読み込まれるように記述します。

// app/AppKernel.php
public function registerBundles()
{
    $bundles = [
        // other bundles here...
    ];

    if (in_array($this->getEnvironment(), ['dev', 'test'])) {
        // ...
        $bundles[] = new CoreSphere\ConsoleBundle\CoreSphereConsoleBundle();
    }

    return $bundles;
}

そしてルーティングの設定をするために、app/config/routing_dev.ymlを編集します。

# app/config/routing_dev.yml

# ...
_main:
    resource: routing.yml

coresphere_console:
    resource: .
    type: extra

最後にassets:install webを実行します。

bin/console assets:install web

実際に動かしてみる

まずはSymfonyにhttpでアクセスしましょう。
今回はビルトインサーバを利用します。

$ bin/console server:start
$ open localhost:8000

右下の、Consoleアイコンをクリックします。

スクリーンショット 2016-12-04 20.28.46.png (184.1 kB)

以下のようにコンソールページが表示されます。

スクリーンショット 2016-12-04 20.30.12.png (133.7 kB)

サジェストも完備

下の入力ボックスに入力すると、サジェストされます。

スクリーンショット 2016-12-04 20.30.27.png (198.6 kB)

こんな感じに、簡単に導入、実行することが出来ます。
ただし、対話式は無理です。httpはステートレスだから仕方ないですね。

どこで使えるのか?

僕がよく使うのはcache:cleardebug:routerdebug:containerなどで利用しています。

最後に

Symfonyには、欲しいと思う機能は結構Bundleとして公開されています。 ぜひぜひ探してみてはいかがでしょうか?

また、余裕があるのならばBundleがどのように実装されているかを覗いてみると新たな学びがあると思います。

comments powered by Disqus

© 2017 polidog lab++