Amazon.co.jp ウィジェット
スポンサードリンク

2007年11月04日

Pylons によるオレ様フレームワークの作り方(2)

pylons アプリケーションでは

$ paster controller bar
を実行すると、コントローラーとテストの骨組みを自動生成してくれます。 このコマンドが実行できる仕組みは、次のようになっています。
  1. pylons アプリケーション(例: welle)のwelle/egg-info/paster_plugins.txt を見ると、"Pylons", "WebHelpers", "PasteScript"と書かれています。paste はこれを見ます。
  2. Pylons のEGG-INFO/entry_points.txt を見ると、次のように書かれています。
        [paste.paster_command]
        controller = pylons.commands:ControllerCommand
        restcontroller = pylons.commands:RestControllerCommand
        shell = pylons.commands:ShellCommand
    
        [paste.paster_create_template]
        pylons = pylons.util:PylonsTemplate
        pylons_minimal = pylons.util:MinimalPylonsTemplate
    
        [python.templating.engines]
        pylonsmyghty = pylons.templating:MyghtyTemplatePlugin [myghty]
        
        [nose.plugins]
        pylons = pylons.test:PylonsPlugin  
      
  3. paste は、[paste.paster_command] をみます。"$ paster controller hoge" の場合、paste.script.command パッケージのCommand を継承した ControllerCommand が呼び出されます。

まとめると、

  1. mycms にCommand を継承したオリジナルコマンドを実装する。
  2. mycms のEGG-INFO/entry_points の paste.paster_command ディレクティブで、オリジナルコマンドの場所を教える。
  3. mycms から生成されるプロジェクトテンプレートのegg-info/paster_plugins.txt に、"mycms" と記述する。

これで、mycms で作成したプロジェクトの中で、mycms で提供されたオリジナルのコマンドが利用できるようになります。

なお、paste のコマンド拡張には、

  • paste.paster_command: プロジェクトの中で実行できるコマンド
  • paste.global_paster_command: パッケージを入れさえすれば、どこでも使えるコマンド
  • paste.paster_create_template: プロジェクト作成時に、骨組を自動生成するためのコマンド
があります。

使い方(paste.paster_command, paste.global_paster_command)は、こんな感じ。
$ paster my-command --my-option my-target
paster の第1引数にコマンド名を指定し、コマンドに渡したい引数を続けます。

詳しくは、PasteScriptの開発者用マニュアルを参照してください。これで、オリジナルフレームワークに、オリジナルのコマンドを追加できるようになります。

追記: aodag さんがmodel生成コマンドを実装する例を書いています。

タグ:Python Pylons Paste
posted by junya at 18:42 | Comment(1) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
> mycms から生成されるプロジェクトテンプレートのegg-info/paster_plugins.txt に、"mycms" と記述する。

paster_plugins.txt は、プロジェクトの骨組みを作るクラスの中で、以下のように指定します。

class TriaxCMSTemplate(Template):
_template_dir = 'project_templates/default_project'
summary = 'Hoge application template'
egg_plugins = ['Hoge', 'Pylons', 'WebHelpers']
Posted by junya at 2007年12月08日 18:27
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。