[heroku][plugin][herocutter] herocutterでherokuコマンドを拡張しよう!

みなさん heroku 活用していますか?さらにアツくなってきていますよね!!

先日のブログでは、herokuの外部連携サービスやaddonをご紹介しました。
http://d.hatena.ne.jp/mat_aki/20100308/1268043759

これは、heroku本体で提供されているもので、われわれユーザが自由に種類や機能を増やすことはできません。しかし、herokuには、自由に機能をカスタマイズできる拡張が別にあります。今回はこれを紹介しようと思います。

herokuを操作するときのユーザのインターフェースは、「WebブラウザからGUIで操作する」と「gemのheroku.gemをインストールしてherokuコマンドから操作する」の2種類があります。しかし、herokuにアツくなっている皆さんはもちろんherokuコマンドから操作しているだろうと思います。そのherokuコマンドは、なんとplugin機構を持っておりユーザが自由に拡張することができるのです!!

そして、そのプラグインを共有する仕組みも実はもうあるのです。その名も herocutter http://herocutter.heroku.com/ です。おそらく日本で紹介するブログはこれが初!でしょう。ググっても日本語では、僕のつぶやきしか出てこないので。gemcutterをherokuプラグイン用にカスタマイズしたサービスのようです。こんな使い方を思いつくなんて、面白いですよね。

では、簡単に使い方を紹介していきます。

まずは、herocutterのプラグインを利用できる用にする前準備から、herokuコマンドとherocutterを繋ぐプラグインをインストールします。(もちろんheroku.gemはインストールしているのが大前提です)

heroku plugins:install git://github.com/hone/heroku_herocutter.git

これで、herocutterをherokuコマンドから利用できる準備が整いました。チュートリアル通りに colorize_console というプラグインをインストールしてみましょう。

heroku plugins:install colorize_console

さて、あなたのサービスにいつもの様に console で繋いでみましょう。なんとコンソールの出力に色がついています!!

cd [アプリのDIR]
heroku console

こんなに簡単にプラグインが利用できる様になりました。すごいですよねー。

以下のコマンドで公開されているプラグイン一覧が表示されます。これも一番始めにセットアップしたプラグインが提供した機能です。-r を外せばローカルにインストールしているものだけが表示されます。

heroku plugins:list -r

現在公開されているプラグインは以下の7個です。

  • backup
  • colorize_console
  • herocutter
  • herogit
  • heroku-mongo-sync
  • switch_command
  • tab_complete_console

この中からおすすめのプラグインを紹介します。7つの中で一番のおすすめは、 switch_command プラグインです。これは、複数のherokuインスタンスを同じgitリポジトリに紐付けているとき(例えば、本番環境とステージング環境)にherokuコマンドで操作するインスタンスを固定しておくことができるのです。日頃は、ステージング環境のみしか触らないので、そちらにスイッチしておいて、本番を操作するときだけ切り替えるというように使えます。いちいち --app production など引数を付ける必要がなくなります。

以下がコマンド例です。

heroku plugins:install switch_command  # インストール
heroku switch staging                  # ステージングを指定
heroku switch production               # 本番環境を指定

以上で、herokuのプラグイン拡張+herocutterの使い方は終わりです。

最後の最後に、プラグインの作り方について紹介しようと思うのですが、まだ僕自身プラグインを作成したことがないので、レポジトリの紹介だけ。例えば、これ http://github.com/hone/heroku_colorize_console/ 。上で紹介したコンソール出力に色を付けるプラグインのコードです。かなり少ないコードですね。僕もプラグインを作りたいなぁっと思っていますが、アイデアを模索中の段階です。

さて、今回は、herokuのプラグインとherocutterを紹介しました。あなたもherokuを使って面白いサービスを実現してみてはいかがでしょうか?