翔泳社のオンラインショップ

かんたんRuby on RailsでWebアプリケーション開発 正誤表

(最終更新日:2009-04-21)

お買い上げになった刷数:
訂正箇所 改訂
刷数
内容

最新の環境への対応について
未定
追加情報 最新のRubyやRailsを利用した場合の問題点と対応についてテキストファイルとしてまとめましたので、こちらからダウンロードしてご参照ください。
P.006
「リスト」と「コマンドの表記」の間に追加
2刷
追加情報 バックスラッシュの表記......文字列や正規表現などでエスケープ文字として利用されるバックスラッシュ(\)は、日本語キーボードでは¥キーに割り当てられています。この文字はフォントによって「\」と表記されることも「¥」と表記されることもあります。
P.008
下から2行目
2刷
Railsパッケージなどを収録しています。
Railsパッケージなどを収録しています

注★翔泳社Webサイトの正誤表ページ(http://www.seshop.com/book/errata/)で、追加・補足情報・最新の環境への対応方法などを公開しているのでこちらも参照してください。
P.011
「Linuxの場合」の1行目
2刷
以下の実行例ではCD-ROMドライブを/dev/cdroms/cdom0、
以下の実行例ではCD-ROMドライブを/dev/cdroms/cdrom0、
P.017
「原則1...DRY」の下、1行目
2刷
「同じことを繰りかえさないこと」は、達人プログラマーとして知られているデイブ・トーマスさんが、…
「同じことを繰りかえさないこと」は、達人プログラマーとして知られているアンディ・ハントさんとデイ
ブ・トーマスさんが、…
P.030
「Linuxの場合」の3行目
2刷
なお、以下の説明ではCDドライブを/dev/cdroms/cdom0、
なお、以下の説明ではCDドライブを/dev/cdroms/cdrom0、
P.031
未定
追加情報 プロキシサーバが必要な環境でaptitudeを実行する場合は、あらかじめ環境変数http_proxyにプロキシのホスト名とポート番号を設定しておいてください。なお、RubyGemsも該当環境変数を参照してプロキシサーバーを利用します。
P.032
9行目の右側のコマンドライン
2刷
gem install rails --indclude-dependencies
gem install rails --include-dependencies
P.045
上から3つ目の実行例の最下行
2刷
create app/views\aisatsu/bye.rhtml
create app/views/aisatsu/bye.rhtml
P.055,065
リスト1-10
未定
追加情報 @content_for_layout ではなく、yeield を推奨します。

●56ページ
リスト1-10 3行目
【修正前】<%= @content_for_layout %>
【修正後】<%= yield %>

●65ページ
リスト 1-10 右段2行目
【修正前】<%= @content_for_layout %> ……C
【修正後】<%= yield %> ……C

65ページで使っている yield とは、メソッドの内側から外部の処理を呼び出す特殊な式です。レイアウトでは、アクションに関連付けられたrhtml(たとえばdare.rhtml)がレイアウト用rhtmlの内側で処理されます。このため、yield式を利用してアクションに関連付けられたrhtmlの出力へ制御を移します。

なお、以前のRailsでは、@content_for_layoutという変数にアクションに関連付けられたrhtmlの出力を文字列として保持し、それを利用していましたが、現在は推奨されていません。
P.071
図2-03の引出線説明
2刷
[Show]-------・削除するときクリック
[Destroy]----・内容を表示するときクリック
[Show]-------・内容を表示するときクリック
[Destroy]----・削除するときクリック
画面上の[Show]に対する説明と[Destroy]に対する説明を入れ替えます。
P.083
実行例の5行目と7行目
2刷
<略>
-- execute("create user ypuser_production@localhost identified by 'ror'")
-> 0.1000s
-- execute("grant all privileges on yellowpage_production.* to 'ypuser_production'@'localhost'")
<略>
-- execute("create user ypuser_p@localhost identified by 'ror'")
-> 0.1000s
-- execute("grant all privileges on yellowpage_production.* to 'ypuser_p'@'localhost'")
P.084
実行例の上から5行目
2刷
-- execute("create user ypuser_development@localhost identified by 'ror'")
-- execute("create user ypuser_d@localhost identified by 'ror'")
P.103
1行目
2刷
2日目のサンプルプログラムは、
3日目のサンプルプログラムは、
P.108
手順2の実行例の2行目
2刷
C:\--\rails\ajax>ruby script\generate controller calc console
C:\--\rails\calc>ruby script\generate controller calc console
P.110
最下行
2刷
コントローラのソースファイルはapp/controllers/cacl_controller.rbです。
コントローラのソースファイルはapp/controllers/calc_controller.rbです。
P.111
リスト3-04のファイル名とリストの末尾の2箇所
2刷
リスト3-04..._calc_controller.rb
------------------------------------------------
(省略)
  end
0
end
リスト3-04...calc_controller.rb
------------------------------------------------
(省略)
   end
0
end

end

リスト名に余計な「_」が付いていました。また、classに対応するendが抜けていました。
P.122
「Webブラウザーから~を受け取る」上から3行目
2刷
start_form_tag メソッドに :multiple => true オプションを設定します。

start_form_tag メソッドに :multipart => true オプションを設定します。
P.136
リスト4-12の2ブロック目の3行目
2刷
本文に利用しているフォントでは、「\」を「\」と表記しています。このリストでは文字間が詰まっているため「V」に見えますが、実際には「\/」です。Windowsを利用している場合には、「\/」と打ち込んでください。
P.136
リスト4_12 app/models/page.rbの追加部分の終端
2刷
<略>
end ●--------------------------追加

def fullpath(dir)
"#{RAILS_ROOT}/public/#{dir}"
end
<略>
end 

def fullpath(dir)
"#{RAILS_ROOT}/public/#{dir}"
end ●--------------------------追加
追加行の終端として示した部分の3行下が正しい終端となります。
P.140
リスト4-20 app/controller/album_controller.rbの追加部分の終端
2刷
<略>
  def update
@page = Page.find(params[:id])
if @page.update_attributes(params[:page])
redirect_to :action => 'show', :id => @page
else
render :action => 'edit' ●--------------------------追加
end
end 
<略>
  def update
@page = Page.find(params[:id])
if @page.update_attributes(params[:page])
redirect_to :action => 'show', :id => @page
else
render :action => 'edit' 
end ●--------------------------追加 end 
次ページの1行目が正しい終端となります。
P.168
オレンジ色の囲み内「poファイル」の説明文
2刷
日本語化したいボタン名やメッセージに日本語を設定します。
日本語化したいボタン名やメッセージに日本語を設定します。
P.172
手順2
未定
追加情報 Ruby-GetTextを利用するにはRailsにgettextのrailsライブラリと、moファイルをロードしておく必要があります。この処理は、Webアプリケーションを実行するために呼び出されるコントローラ内に記述します。ただし、利用するプラグイン(6日目参照)によっては、コントローラを読み込まないものがあるため、以下のように、config\environment.rb で組み込みを行い、コントローラではテキストドメインの指定のみ行います。

上記を踏まえて、5日目のサンプルプログラムのうち、関連するファイルの変更点は以下の通りです。

environment.rb
----------------------------------------
# Include your application configuration below ←最終行
require 'gettext/rails' ←追加。gettextのrailsライブラリをロードする。
----------------------------------------

application.rb
----------------------------------------
# Filters added to this controller will be run for all controllers in the application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
init_gettext 'albumj'
←追加。プロジェクト名と同じテキストドメイン(poファイルの単位)をアプリケーションが利用することを指示
end
----------------------------------------
P.172
リスト5-10 5行目
2刷
プロジェクト名と同じテキストメイン
プロジェクト名と同じテキストメイン
P.174
本文の下から2行目
2刷
このとき、直接HTMLに記述していたテキストは、_( )で囲んだ上に、さらに<%= h %>で囲みます。
このとき、直接HTMLに記述していたテキストは、' 'または" "で囲んでHTML上のテキストからRubyプログラ
ムの文字列としてくくってから
_( )で囲み、さらに<%= h %>で囲みます。
P.175
リスト5-05 _content.rhtmlの下から3行目
2刷
<p><%= h _(memo) %><br/> ....B
<p><%= h _('memo') %><br/> ....B
P.184
「C」の説明文の1行目
2刷
C... update_profilesメソッドは、
C... update_pofilesメソッドは、
P.200
手順5の1行目
2刷
app/contollers/application.rb
app/controllers/application.rb
P.212
リスト6-14 下から7行目と8行目
2刷
<% if user? %> <<<追加。ログイン済みなら、編集、削除のリンクを作成。
  <td class="edit"><%= link_to _('Edit'), :action => 'edit', :id => page %>/td> <<< 追加
  <td class="delete"><%= link_to _('Delete'), :action => 'delete', :id => page %></td> <<<追加
<% end %> <<<追加
</tr>
<%
end
%>
</table>
<% if user? %> <<<追加。ログイン済みなら、編集、削除のリンクを作成。
  <td class="edit"><%= link_to _('Edit'), :action => 'edit', :id => page %>/td> 
<td class="delete"><%= link_to _('Delete'), :action => 'delete', :id => page %></td>
<% end %> <<<追加 </tr>
<%
end
%>
</table>
P.219
リスト6-06 2つ目のブロックの「......A」が入る場所を2箇所修正
2刷
     else
flash[:notice] << _(' Please log in.')
end
redirect_to :action => 'login'
end
end
rescue Exception => e
flash.now[:notice] = nil ......A flash.now[:warning] = _('Error creating account: confirmation email not sent')
logger.error "Unable to send confirmation E-Mail:" ......B logger.error e
end
end
     else
flash[:notice] << _(' Please log in.')......A end
end
redirect_to :action => 'login'
end
rescue Exception => e
flash.now[:notice] = nil
flash.now[:warning] = _('Error creating account: confirmation email not sent')......A logger.error "Unable to send confirmation E-Mail:" ......B logger.error e
end
end
P.227
図6-13の下の段落
2刷
キーワードを埋め込むことによるメリットは次の2つです。1つはRubyのフォーマットメソッドでは翻訳の都合による単語の順序の入れ替えができないことです。たとえば、この例では"%sに%sをコピーしました"のように翻訳したいかもしれません。しかし、Rubyのフォーマットメソッドは、置き換えを引数の出現順序に頼っています。したがって、Ruby-GetTextのように実行時にフォーマット文字列を置き換える仕組みでは対応できません。
キーワードを埋め込むことによるメリットは次の2つです。1つはフォーマットメソッドでの引数の順序の入れ替えが一般的ではないことです(注)。そのため、単純に "%sに%sをコピーしました" のようにフォーマット文字列を記述すると、出現順に引数が置き換えられてしまいます。

注)%と指示子(sなど)の間にnth$形式の引数指定を記述することで制御できます。この例では "%2$s was copied into %1$s" のように書くことで順序を交換できます。
本文を訂正し、注を追加しています。
P.230
一番上の見出し
2刷
7日目のサンプルalbumjxプロジェクト
7日目のサンプルalbumixプロジェクト
P.243
リスト7-02
2刷
module Yahoo
APPID = 'アプリケーションID' <<<プログラム時には、?の代わりに取得したアプリケーションIDを入力。
end
module Yahoo
APPID = 'アプリケーションID' <<<プログラム時には、取得したアプリケーションIDを入力。
end
P.258
コードリスト内、最下行
2刷
t.print
t.print_a
t.print_b
P.288
リスト名
2刷
リスト....database.yrml
リスト....database.yml
P.357
注3
2刷
lightpdは「ライティ」と読みます。
lighttpdは「ライティ」と読みます。
P.381
一番下のコードリスト2行目
2刷
<%= hidden_fiedl_tag 'name', @person.name %>
<%= hidden_field_tag 'name', @person.name %>
P.381
一番上のrhtml
2刷
<%= hidden_fiedl_tag 'name', @name %>
<%= hidden_field_tag 'name', @name %>
P.393
「ERB」の2行目
2刷
(開発は関俊さん)
(開発は関俊さん)

ページ上に戻る

正誤表トップに戻る