よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

November 11, 2007 [おもひで]

[Rails] ふるーいRailsアプリケーションをとりあえず2.0化する

Ruby-GetText-PackageにはRailsのサンプルアプリケーションがついているんだけど、2005/8/28にscaffoldした代物なんだよね(Rails-0.13.1らしい)。

さすがに、Rails2.0RC1ではそのまま使えなかったので修正してみることにしよう。ちなみに修正が必要な部分はRuby-GetText-Packageとは関係なかった(Ruby-GetText-Packageに依存する部分で修正する必要があるところは今のところなさそう、うひっ)。

といういわけでスタート。まずは、比較のためにRails-2.0RC1でサンプルアプリ(blog)と同じ名前の空アプリを作っておく。

$ rails blog

で、サンプルアプリに戻って、ruby script/serverを起動すると500 Internal Server Errorになるので、log/development.rbの内容を確認しながら修正していく。

config/environment.rbのRails::Initializer.run do |config| endブロック内にconfig.action_controller.sessionの設定が必要とのことなので、先ほど作った空アプリのconfig/environment.rbの該当部分からコピペする。

  config.action_controller.session = {
    :session_key => '_blog_session',
    :secret      => '481e79cd6d557ee64d26390fb85013f3'
  }

これで、ひとまず一覧は表示できるようになった。
さて次はと。編集系のrhtmlで、start_form_tagがないよ、というエラーになるのでそこは書き換える。
こんな感じかな。

(new.rhtml)
<% form_for :article, @article, :url => {:action => 'create'} do |f| %>
  <%= render_partial 'form' %>
  <p><%= submit_tag _('Create') %></p>
<% end %>
 
(edit.rhtml)
<% form_for :article, @article, :url => {:action =>  'update', :id => @article} do |f| %>
  <%= render_partial 'form' %>
  <p><%= submit_tag _('Create') %></p>
<% end %>

APIリファレンスを見ても更新のときに :id => @articleなんて書いてないんだけど、これ書いてないとidが渡せなかった。うーむ。

ま、ともかく、以上でサンプルアプリは無事動くようになった。めでたしめでたし・・・・・

と思ったんだけど、よく考えるといろいろなバージョンの流儀が混じってるソースって、サンプルとしてはよろしくないよね。rhtmlっていうファイル名からしてRails-2.0っぽくないし・・・。結局イチから直すとするか。はー。


編集