『現場で使える Ruby on Rails 5速習実践ガイド』サポートサイト | マイナビブックス

『現場で使える Ruby on Rails 5速習実践ガイド』サポートサイト

このページは、
『現場で使える Ruby on Rails 5速習実践ガイド(ISBN978-4-8399-6222-7)』
のサポートページです。

紙版: 2018/10/19 初版第1刷発行


サンプルファイルのダウンロード

本書のサンプルファイルです。下記からダウンロードしてください。
Chapterごとに、完成版のファイルがダウンロードできるようになっています。
本書では、基本的には、前のChapterが完成していることを前提として次のChapterが始まります。ですので、たとえばChapter4から始めたいときには、Chapter3の完成ファイルをダウンロードして使ってください。

Chapter3の完成ファイル
Chapter4の完成ファイル
Chapter5の完成ファイル
Chapter6の完成ファイル
Chapter7の完成ファイル
Chapter8の完成ファイル


 

補足情報

WSL環境を利用していると、P.205の「bundle exec rspec spec/system/task_spec.rb」にて以下のエラーが出ることがあります。

Selenium::WebDriver::Error::UnknownError:

 

この場合は、以下の方法をご覧いただき、WSLにchromedriverをインストールしてください。

https://gist.github.com/upinetree/fb71a947cc100e7918b7b280485d620c

※『対策A. chromedriver-helper を使わずに、自分で chromedriver を設定する』を実施してください。

訂正情報

以下の誤りがありました。お詫びの上訂正します。
 

● P.032の2つ目のプログラムの囲み(2刷で修正済み)
誤(2つ目): < person.millionaire?
正(2つ目): < person.billionaire?

 

● P.036の2つ目のプログラムの囲み(2刷で修正済み)
誤:
def name(full: true, with_age: true)
  n = if full
      "#{given_name} #{family_name}"
    else
      given_name
    end
  n << "(#{age})" if with_age
end

正:
def name(full: true, with_age: true)
  n = if full
      "#{given_name} #{family_name}"
    else
      given_name
    end
  n << "(#{age})" if with_age
  n ---- (ここを追加してください)
end
 

 

● P.091の1つ目のプログラム後半(2刷で修正済み)
誤: --output-document=config/locales/ja.yml
正: --output-file=config/locales/ja.yml

 

● P.152の最後のプログラム囲みの見出し(2刷で修正済み)
誤: app/models/users.rbl
正: app/models/user.rb

 

● P.153の1つ目の 「Railsコンソールで実行」の囲み(2刷で修正済み)
誤:
> User.new(name: 'ユーザー', email: 'sample@example.com', password: 'password',password_confirmation: 'password').save
=> true

正:
> user = User.new(name: 'ユーサ゛ー', email: 'sample@example.com', password: 'password', password_confirmation: 'password')
> user.save
=> true
 
● P.155の表(「URLの例」の3行目から7行目)
誤:
/users/17/edit
/users/17
/users
/users/17
 /users/17

正:
/admin/users/17/edit 
/admin/users/17 
/admin/users 
/admin/users/17 
/admin/users/17
 
 

● P.156のプログラム「app/controllers/admin/users_controller.rb」の10行目(3刷で修正済み)

誤:
redirect_to admin_users_path, notice: "ユーザー「#{@user.name}」を登録しました。"

正:
redirect_to admin_user_url(@user), notice: "ユーザー「#{@user.name}」を登録しました。"
 
● P.158のプログラム「def update」の下から3行目(3刷で修正済み)
誤: render :new
正: render :edit

 

● P.171の一番最後の本文(2刷で修正済み)
誤: ?を次のように変更してusr_idを代入するやり方でしょう。
正: ?を次のように変更してuser_idを代入するやり方でしょう。

 

● P.312「7-6-1 タスクをCSV出力(エクスポート)する」の本文2行目(2刷で修正済み)
誤:次のようなto_csvというクラスメソッド
正:次のようなgenerate_csvというクラスメソッド


● P.300の本文4行目から6行目と、「app/mailers/application_mailer.rb」部分(7刷で修正済み)
誤:
ところで、アプリケーションから複数種類のメールを送信する場合には、どのメールもfromは同じにしたいということが良くあります。このような場合は、デフォルト値を指定しておくこともできます。taskleafにおいても将来に備えてfromを次のようにデフォルト指定しておくことにしましょう(❷)。

class TaskMailer < ApplicationMailer 
  default from: 'taskleaf@example.com' --- ❷ 
  def creation_email(task) @task = task
end
 

正:
ところで、アプリケーションから複数種類のメールを送信する場合には、どのメールもfromは同じにしたいということが良くあります。ApplicationMailer にデフォルト値が設定されているので、taskleafにおいても将来に備えてfromを次のようにデフォルト指定を設定しておきましょう(❷)。

 

class ApplicationMailer < ActionMailer::Base
  default from: 'taskleaf@example.com' --- ❷
  layout 'mailer'
end

● P.312の2つ目のプログラム「def self.generate_csv」部分(2刷で修正済み)
誤:
def self.generate_csv
  CSV.generate(headers: true) do |csv| 
    csv << csv_attributes 
    all.each do |task|
      csv << csv_attributes.map{|attr| task.send(attr) }
  end
end

正:
def self.generate_csv
  CSV.generate(headers: true) do |csv| 
    csv << csv_attributes 
    all.each do |task|
      csv << csv_attributes.map{|attr| task.send(attr) }
    end  ---- (ここを追加してください)
  end
end

 

● P.338の一番下のプログラム「app/views/tasks/destroy.js.erb」の4行目(4刷で修正済み)
誤:
message.innerText = 'タスク「<%= @task.name %>」を削除しました。残りのタスクは<%= current_user.tasks.count %>
件です。';

正:
message.innerText = 'タスク「<%= current_user.tasks.count %>」を削除しました。残りのタスクは<%= current_user.tasks.count %>
件です。';