『実践Ruby on Rails 4』の Baukis を Rails 4.2 にアップグレードする

2015/11/17

拙著『実践Ruby on Rails 4』が出版されてから1年半が経過しました。

原稿執筆時の Rails の最新バージョンは 4.1.0。本日(2015 年 11 月 17 日)における最新バージョンは 4.2.5。Rails 自体の仕様は大きく変化していないものの、書籍のサンプルアプリケーション Baukis の Rails を 4.2.5 に上げると、そのままでは正常に動きません。

Baukis を Rails 4.2.5 に対応させる手順を箇条書きでまとめます。

  • Gemfilegem 'rails', '4.1.0'gem 'rails', '4.2.5' に変更する。
  • Gemfilegem 'foreigner', '~> 1.6.1' の行を削除する。
  • Gemfilegem 'rspec-rails', '~> 3.0.0.beta2'gem 'rspec-rails', '~> 3.4.0' に変更する。
  • コマンド bin/bundle update を実行する。
  • config/environments/production.rbconfig.serve_static_assets = trueconfig.serve_static_files = true に変更する。
  • config/environments/test.rbconfig.serve_static_assets = trueconfig.serve_static_files = true に変更する。
  • app/assets/javascripts/staff/paths.js.coffee.erb を次のように書き換える:
window.named_paths = []
<% %w(count_staff_messages tag_staff_message).each do |name| %>
<% route = Rails.application.routes.named_routes[name] %>
<%= "window.named_paths['#{name}'] = '#{route.path.spec.to_s}'\n" %>
<% end %>

window.path_for = (name, ids = {}) ->
  path = window.named_paths[name]
  path = path.replace(/\(\.:format\)$/, '')
  for key, id of ids
    path = path.replace(new RegExp(":#{key}\\b"), id)
  path

筆者の環境では、以上の変更によりテストがすべて通り、警告も出ませんでした。ブラウザでざっと動作検証もしたところ、大丈夫なようです。

読者の中で問題を発見した方がいらっしゃいましたら、hermes@oiax.jp までご連絡ください。