はじめに

Rails2.3.1が出ていたので、リリース情報を読み返していたらApplication Templateという素敵機能が2.3から使える事がわかった。

Rails2.3リリースノート訳

Railsを止められない理由の一つに、プロジェクトを作り始めてから実際に動作するまでが非常にラクチンだという事がある。

例えば:

% rails Todo
% cd Todo
% script/generate scaffold todo title:string finished:boolean
% rake db:migrate
% script/server


このたった5行のコマンドで簡単なToDoアプリが出来上がっている。

しかしモックならまだしも実運用するためのプロジェクトを作ろうと思ったら、必要なプラグインを入れたり、いつも使う拡張コードを書いたり、さすがのRailsでも毎回粛々とした作業は必要だ。

コマンド一発でいつも使うプロジェクトのセッティングまでしてくれればいいのに!そんなRailsエンジニアが誰しも望んでいたであろう機能が「Application Template」だ。

Application Templateとは何か?

Railsのプロジェクトにプラグインをインストールしたりgemを展開したり、ルートを設定したり、その他初期設定にまつわる様々な処理を自動化するための機能です。

  • DSLを使ったシンプルなRubyファイル、もしくはテキストファイルをテンプレートファイルとする
  • テンプレートファイルはローカルでもリモートでもOK。gist.github.comに置くのがベターかも。
  • 初期設定の自動化は、新規プロジェクトでも既存プロジェクトでもOK。

Gistで自動化ファイルを共有しちゃいなよ、YOU!

超簡単なテンプレートの例

# template.rb
run "rm public/index.html"
generate(:scaffold, "todo title:string finished:boolean")
route "map.root :controller => 'todos'"
rake("db:migrate")

git :init
git :add => "."
git :commit => "-a -m 'Initial commit'"


これをgistにアップして

% rails todo -m http://gist.github.com/74747.txt
      create
      create  app/controllers
  (中略)
    applying  template: http://gist.github.com/74747.txt
   executing  rm public/index.html from /Users/haga/Desktop/todo
  generating  scaffold
       route  map.root :controller => 'todos'
        rake  db:migrate
     running  git init
     running  git add .
     running  git commit -a -m 'Initial commit'
     applied  http://gist.github.com/74747.txt


rails コマンドに-mオプションでgistのURLを渡してやれば、いつものプロジェクト生成後、テンプレートによる自動化が行われているのがわかりますね!

テンプレートで使えるDSL

gem(name, options = {})

  • config/environment.rbにconfig.gemを追加する

plugin(name, options = {})

-プラグインをインストールする

initializer(filename, data = nil, &block)

  • config/initializersに初期化スクリプトを作成する
  • 同じようにlib()やvendor()といったメソッドもある。

rakefile(filename, data = nil, &block)

  • lib/tasksにrakeファイルを作成する

generate(what, args)

  • generatorスクリプトを実行する

run(command)

  • shellコマンドを実行する

rake(command, options = {})

  • rakeコマンドを実行する

route(routing_code)

  • config/routes.rbにルート定義を追加する

inside(dir)

  • ディレクトリの中でコマンドなどを実行する

ask(question)

  • ユーザーからの入力を取得する

yes?(question) or no?(question)

  • y/n形式の入力を待つ

git(:must => “-a love”)

  • gitコマンドを実行する

参考ページ

さいごに

各DSLの深追いは次のエントリーでやる予定

続き:Rails2.3のApplication Templateを使ってRspecやI18nの設定を自動化

Posted in ruby, ruby on rails, 日記 at 3月 6th, 2009. Trackback URI: trackback
Tags: ,

No Responses to “Rails 2.3のApplication Templateで煩わしい初期設定とはおさらばする!”

Leave a Reply