エクステンションAPISimple way to add missing functionality to the framework

いくつかのnpmパッケージはすでにrailwayのエクステンションです。npmfile.jsに記述するだけです。

require('railway-twitter');

注意:パッケージのinitメソッドはアプリケーションの初期化後に呼び出されます。

インストールスクリプト

エクステンションのルートにinstall.jsが実装されている場合には、railway installコマンドでインストール後、使用することができます。

このスクリプトはアプリケーションのコンテキストで実行される為、アプリケーションのグローバル変数やrailwayにアクセスすることができます。また、インストール処理完了後、process.exit()を呼び出す必要があります。

RailwayエクステンションAPI

全てのrailwayモジュールはグローバルでシングルトンなrailwayオブジェクトにパブリッシュされます。いくつかのモジュールは拡張したりまたはモンキーパッチをかけることも可能です。以下は一般的なユースケースです。

ツール

railway.toolsハッシュはコマンドラインから呼び出されるコマンドを含んでいます。例えば、railway routesコマンドはrailway.tools.routes()メソッド呼び出します。

railway.toolsオブジェクトにメソッドを追加すると、追加したメソッドの名前がコマンドとして使用することができます。

railway.tools.database = function () {
    switch (railway.args.shift()) {
    case 'clean':
        // clean db
        break;
    case 'backup':
        // backup db
        break;
    case 'restore':
        // restore db
        break;
    default:
        console.log('Usage: railway database [clean|backup|restore]');
    }
};

これにより以下のコマンドを使用することが可能です。

railway database
railway database backup
railway database clean
railway database restore

railway helpでこのコマンドのヘルプメッセージを表示する為には、toolのhelpハッシュに記述します。

railway.tools.db.help = {
    shortcut: 'db',
    usage: 'database [backup|restore|clean]',
    description: 'Some database features'
};

railway helpが以下の通り表示されます。

Commands:
   ...
   db, database [backup|restore|clean]  Some database features

ショートカットを定義していれば、フルコマンドの代わりに使用することができます。

 railway db clean