『はじめる! Rails3』読者サポートページ
このページは、電子書籍『はじめる! Rails3 (1)』および『はじめる! Rails3 (2)』(黒田努著、達人出版会)の読者サポートページです。
サンプルアプリケーションのソースコード等を配布する他、読者の皆様からお寄せいただいた質問(一部、筆者による想定質問を含みます)に「Q&A」形式でお答えいたします。
ご質問は hajimeru_rails3@oiax.jp まで電子メールでお寄せください。
配布物
- hinagiku-volume1.zip (145.6 KB) -- サンプルアプリケーションHinagikuのソースコード。第1巻終了時の形。
- hinagiku-volume2.zip (164.5 KB) -- サンプルアプリケーションHinagikuのソースコード。第2巻終了時の形。
- shelf.zip (105.5 KB) -- 演習問題で作るアプリケーションShelfのソースコード。第1巻終了時の形。
-
-- サンプルアプリケーションHinagikuの作成で使用する画像ファイル(hinagiku_logo.png)です。右クリックして「名前を付けて画像を保存」を選択して public/images フォルダに保存してください。
- [更新] hinagiku-volume1.zip, hinagiku-volume2.zip を最新版に差し替えました。(2011/12/04 23:49)
- [更新] shelf.zip を最新版に差し替えました。(2011/11/05 03:22)
- [更新] hinagiku-volume1.zip, hinagiku-volume2.zip を最新版に差し替えました。(2011/11/05 03:10)
- [更新] Q&Aに質問と回答を追加しました。(2011/09/20 02:55)
- [更新] hinagiku.zip を hinagiku-volume1.zip にリネームしました。中身も最新版に差し替えてあります。またhinagiku-volume2.zip の配布を開始しました。(2011/09/11 14:01)
- [更新] shelf.zip の配布を開始しました。(2011/07/31 1:52)
- [更新] hinagiku.zip を最新版に差し替えました。(2011/07/06 14:35)
- [更新] Q&Aに質問と回答を追加しました。(2011/05/19 15:35)
- [更新] hinagiku.zip を最新版に差し替えました。(2011/04/20 00:33)
- [更新] hinagiku.zip を最新版に差し替えました。(2011/04/08 01:48)
- [更新] Q&Aに質問と回答を追加しました。(2011/04/08 00:41)
- [更新] hinagiku.zip を最新版に差し替えました。(2011/03/17 22:08)
- [更新] hinagiku.zip を最新版に差し替えました。(2011/02/02 17:50)
参考資料
- サンプルアプリケーションhinagikuのソースコード - GitHub
- 演習問題用アプリケーションshelfのソースコード - GitHub
- 『はじめる! Rails3(2)』β版を公開しました - 達人出版会日記
- 『はじめる! Rails3(1)』β版の発売に関して - 達人出版会日記
- 勉強始めます! - IT系会社の新入社員奮闘日記
- GWにオススメのRuby on Rails 3の解説書籍 - @IT自分戦略研究所 - Rails Hub情報局
Q&A
Railsコンソールの文字化け
Q. 第1巻第14章「モデルクラスによるデータベース検索」のp.80を学習中です。Railsコンソールで Task.find(1) を実行すると、結果が文字化けします。どうすればよいですか。ちなみに、OSはWindowsです。
A. 以下の手順で直ります。
- (動いていれば)
quitコマンドで Rails コンソールを抜けてください。 config/initializersディレクトリに新規ファイルwindows.rbを作ります。- そこに次のコードを貼り付けます。
if Bundler::WINDOWS require 'nkf' class << $stdout def write_with_conversion(str) write_without_conversion NKF.nkf('-sxm0', str.to_s) end alias_method_chain :write, :conversion end end
なお、このファイルはWindows以外のOSでは何の作用もありません。アプリケーションをMac OS X/Linux環境で動かす場合でも削除する必要はありません。また、ブラウザからのアクセスに対しては従来通りUTF-8でレスポンスを返します。
また、このファイルを追加すると、rails server でRailsアプリケーションを起動した後にコマンドプロンプトに表示されるログも文字化けしなくなります。
電子書籍の正式版においては、このファイルに関する記述が追加される予定です。
参考資料: Ruby/autotest/WindowsでUTF-8表示 - TOBY SOFT wiki
rake db:seed が動かない
Q. 6.3「シードデータ」を学習中です。シードデータを投入するため rake db:seed を実行すると、次のようなエラーが出ます。
rake aborted!
/home/kuroda/work/hinagiku/db/seeds.rb:2: invalid multibyte char (US-ASCII)
/home/kuroda/work/hinagiku/db/seeds.rb:2: invalid multibyte char (US-ASCII)
/home/kuroda/work/hinagiku/db/seeds.rb:2: syntax error, unexpected $end, expecting ']'
"切手を買う",
^
(See full trace by running task with --trace)
A. お使いの Ruby のバージョンが 1.9 であることが原因です。config/db/seeds.rb の1行目に次のようにコメントを追加してください。
# -*- encoding: UTF-8 -*-
なお、日本語を使用しているすべての Ruby ソースコードに対してこのコメントを追加する必要があります。該当するソースコードは app/helpers ディレクトリにある application_helper.rb と tasks_helper.rb です。
Ruby 1.8.7 を利用している場合はこのコメントを追加する必要はありませんが、将来に備えて追加しておくことをお勧めします。
電子書籍の正式版では、このコメントに関する説明が追加され、サンプルコードが修正される予定です。
rake db:migrate が動かない(1)
Q. 第1巻6.2「マイグレーション」で rake db:migrate を実行すると、次のようなエラーが出ます。
rake aborted! no such file to load -- bundler/setup
A. 読者から提供していただいた情報によれば、Ruby が複数インストールされた環境で発生する場合があるようです。
gem update rake でRakeを更新すると問題が解消されたそうです(Mac OS X/Linuxでは、要sudo)。
(2011/04/08) (2011/08/30 更新)
rake db:migrate が動かない(2)
Q. 第1巻6.2「マイグレーション」で rake db:migrate を実行すると、次のようなエラーが出ます。
rake aborted! undefined method `task' for #<Nchak::Application:0x9223b6c>
A. 2011年5月20日にリリースされた、Rake 0.9.0 は バージョン 3.0.7 以前の Rails でエラーを引き起こします。Rake を 0.8.7 にダウングレードするか、後述する方法で Rakefile を書き換えるかしてください。
Rake を 0.8.7 にダウングレードするには、まず Gemfile に次の行を追加します。
gem 'rake', '~> 0.8.7'
そして、ターミナルで以下のコマンドを実行します。
> bundle update > gem uninstall rake --version=0.9.0
Rake 0.9.0 を使い続けたい場合は、nchak ディレクトリの直下にある Rakefile を次のように修正します。
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake'
class Rails::Application
include Rake::DSL if defined?(Rake::DSL)
end
Nchak::Application.load_tasks
7-9行目が追加された部分です。
参考資料: Undefined method 'task' using rake 0.9.0.beta.4 - Stack Overflow
(2011/05/29)
rake db:reset が動かない
Q. 第2巻付録A「開発環境のセットアップ」の動作確認の直前で rake db:reset を実行すると、次のようなエラーが出ます。
rake aborted! uninitialized constant Rake::DSL
A. 読者から提供していただいた情報およびネットの情報を総合すると、gem install rake コマンドでRakeを再インストールすると問題が解消するようです(Mac OS X/Linuxでは、要sudo)。
再インストールの前後でRakeのバージョンは0.9.2のままであるにもかかわらず状況が改善するそうです。
(2011/09/20)

