Rails2.0の足回りと中級者への道

第1回 Rails2.0の足回り

この記事を読むのに必要な時間:およそ 5 分

RailsCoreからなくなったもの

最後に,Rails2.0でフレームワークのコアからなくなってしまった機能について触れておきます。

フレームワークのスリム化のため,さまざまな機能が,Rails2.0ではcoreからはずされ,外部プラグインになりました。

例を挙げると,scaffold,acts_as_*プラグイン,in_place_editing,auto_completeやデータベースアダプターなどです。ただし,外部プラグイン化したとは言え,これらのものについてはgemでインストールするか, script/plugin installでインストールしていけば良いだけです。

それらとは異なり,それら以上に重要で,かつ代替手段に決定打が無いのが,Railsで複数ページ遷移の管理を行うPaginationの消失です。Rails2.0ではPagination機能が削除されました。Rails標準のプラグインとしても提供されず,サードパーティの機能を利用することになります。

この一点のみで,Rails2.0への移行が踏み切れないプロジェクトも多いのではないかと思います。2008年4月時点での代替手段の選択肢は,will_paginateプラグインもしくは,paginating_findプラグインです。

Rails2.0インストール

かけあしで,Rails2.0の進化と変化を紹介してきました。それでは,ごたくはこの辺にしまして,Rails2.0のインストールを行いましょう。

RubyGemsのインストール

まず,Rubyのパッケージ管理システムであるRubyGemsをインストールします。メジャーなOS向けのパッケージが用意されていますので,ダウンロード,インストールしてください。

Rails2.0と必要なパッケージをインストール

RubyGemsのインストールが完了しましたら,gemを用い,Railsとその他必要なパッケージをインストールします。以下では,データベースアダプターとしてsqlite3,Railsのデバッグ用にruby-debugをインストールしています。 Rails2.0では標準のデータベースがsqlite3になっています。

リスト15

% gem install rails sqlite3 sqlite3-ruby ruby-debug

はじめての Rails2.0

それでは,すっかり有名になった Rails の scaffold を利用して,最初の Rails2.0 アプリケーション を作ってみます。

Rails2.0のscaffoldは,Rails1.2でscaffold_resourceと呼ばれていたRESTfulなコードを出力するscaffoldです。そのため,初見の方や,従来のscaffoldから移行される方にはやや敷居の高いコードになっています。ですが,今回の特集の目的であるRESTfulなアプリケーションの作成のサンプルにはもってこいです。

リスト16

% rails hello                                     # Railsアプリケーションフォルダ作成
% cd hello                                        # helloフォルダに移動
% ./script/plugin install scaffolding    # scaffolding pluginをインストール
% ./script/generate scaffold hello      # helloコントローラ,モデル,ビューを作る
% rake db:migrate                             # DBスキーマを作成

さてこれで準備はできました。

Railsアプリケーションをカスタマイズしていきましょう。

リスト17 app/controllers/hellos_controller.rb

# GET /hellos
# GET /hellos.xml
def index
   @greeting = "こんにちは"  # この行を追加

   @hellos = Hello.find(:all)
   respond_to do |format|
     format.html # index.html.erb
     format.xml  { render :xml => @hellos }
   end
end

こんどはViewを編集します。Rails2.0では,.rhtmlという拡張子と,.rxmlという拡張子が非推奨になりました。新しい拡張子はそれぞれ,.erb,.builderになります。Rails2.0では,.rhtml,.rxmlという拡張子もサポートされますが,今後のリリースではサポートが打ち切られれる可能性があります。Rails2.0のscaffoldでもVIEW用のテンプレートは.erbという拡張子のファイル名に変更されています。

index actionのなかに,あいさつを表示する,@greetingという変数を追加しています。

リスト18 app/views/hellos/index.html.erb

<h1>Listing hellos</h1>

<table>
  <tr>
    <th>Message</th>
    <th><%= @greeting %></th>  <!-- この行を追加 -->
  </tr>

<% for hello in @hellos %>
  <tr>
    <td><%=h hello.message %></td>
    <td><%= link_to 'Show', hello %></td>
    <td><%= link_to 'Edit', edit_hello_path(hello) %></td>
    <td><%= link_to 'Destroy', hello, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>
<br />

<%= link_to 'New hello', new_hello_path %>

まとめと次回予告

以上,簡単ではありますが,Rails2.0の香りを感じてみました。次回からは,Rails2.0の機能の詳細を紹介しながら,RESTfulなウェブアプケーションを作っていきたいと思います。

著者プロフィール

鎌田達哉(かまだたつや)

SI企業勤務。10年ほど前にはじめて自分で行ったプログラミングはRubyによるものであったが,語ってもにわかには信じてもらえないような紆余曲折を経て現在に至る。現在は,JVM上の言語実装に興味あり。ありがちですが,Scalaにはまり中。

コメント

コメントの記入