『はじめる! Rails3』読者サポートページ

2011/01/31

このページは、電子書籍『はじめる! Rails3』シリーズ(黒田努著、達人出版会)の読者サポートページです。

サンプルアプリケーションのソースコード等を配布する他、読者の皆様からお寄せいただいた質問(一部、筆者による想定質問を含みます)に「Q&A」形式でお答えいたします。

ご質問は hajimeru_rails3@oiax.jp まで電子メールでお寄せください。

配布物

  • hinagiku-volume1.zip (145.6 KB) -- サンプルアプリケーションHinagikuのソースコード。第1巻終了時の形。
  • hinagiku-volume2.zip (164.5 KB) -- サンプルアプリケーションHinagikuのソースコード。第2巻終了時の形。
  • hinagiku-volume3.zip (99.7 KB) -- サンプルアプリケーションHinagikuのソースコード。第3巻終了時の形。※ ファイルサイズが第2巻終了時より小さいのはjQueryのソースコードが除外されたためです。
  • shelf.zip (105.5 KB) -- 演習問題で作るアプリケーションShelfのソースコード。第1巻終了時の形。
  • -- サンプルアプリケーションHinagikuの作成で使用する画像ファイル(hinagiku_logo.png)です。右クリックして「名前を付けて画像を保存」を選択して public/images フォルダに保存してください。
  • vol3-materials.zip (24.5 KB) -- サンプルアプリケーションHinagikuの新しいビジュアルデザイン用のスタイルシートとロゴ画像。第3巻4.5節参照。
  • [更新] Q&Aに質問と回答を追加しました。(2012/11/06 08:50)
  • [更新] 正誤表を更新しました。(2012/07/24 20:55)
  • [更新] hinagiku-volume3.zip の配布を開始しました。(2012/04/06 23:42)
  • [更新] vol3-materials.zip, hinagiku-volume2.zip を最新版に差し替えました。(2012/03/24 15:23)
  • [更新] vol3-materials.zip の配布を開始しました。(2012/03/20 11:54)
  • [更新] 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)

正誤表(未修正のもの)

第3巻(β版)

  • P.8下から11行目。
    • (誤) app/assets/javascripts/application.css
    • (正) app/assets/stylesheets/application.css
  • P.33の本文中程「同様に、新規ファイル」の次。
    • (誤) db/development/categories.rb
    • (正) db/seeds/development/categories.rb
  • P.68囲みの中。
    • (誤) 第章を
    • (正) 付録Bを

(2012/04/04 更新)

参考資料

Q&A

Railsコンソールの文字化け

Q. 第1巻第14章「モデルクラスによるデータベース検索」のp.80を学習中です。Railsコンソールで Task.find(1) を実行すると、結果が文字化けします。どうすればよいですか。ちなみに、OSはWindowsです。

A. 以下の手順で直ります。

  1. (動いていれば)quit コマンドで Rails コンソールを抜けてください。
  2. config/initializers ディレクトリに新規ファイル windows.rb を作ります。
  3. そこに次のコードを貼り付けます。
    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. 第1巻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.rbtasks_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. 古いバージョンのRubyGemsまたはRakeを使っているのが原因と思われます。gem update --system でRubyGemsを更新し、gem update rake でRakeを更新してください。

(2011/04/08) (2012/04/06 更新)

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)

Production環境で application.css isn't precompiled というエラーが出る

Q. 第2巻第16.1節「production環境」で、rails s -e production -p 3001 を実行し、トップページをブラウザで開くと、「We're sorry, but something went wrong」と表示されます。ログには次のようなエラーが出ています。

ActionView::Template::Error (application.css isn't precompiled)

A. バージョン3.1以降のRailsを使用していることが原因です。第2巻はRails 3.0をベースに記述されているので、Rails 3.1以上にバージョンアップすると動かないことがあります。Gemfile の Rails のバージョンを 3.0.11 に書き換えて bundle update rails を実行して Rails をダウングレードしてください。

なお、このエラーの原因になっている新機能「アセットパイプライン」については、第3巻の2-3章で説明されています。

(2012/11/06)