『実践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 に対応させる手順を箇条書きでまとめます。
Gemfile
のgem 'rails', '4.1.0'
をgem 'rails', '4.2.5'
に変更する。Gemfile
のgem 'foreigner', '~> 1.6.1'
の行を削除する。Gemfile
のgem 'rspec-rails', '~> 3.0.0.beta2'
をgem 'rspec-rails', '~> 3.4.0'
に変更する。- コマンド
bin/bundle update
を実行する。 config/environments/production.rb
のconfig.serve_static_assets = true
をconfig.serve_static_files = true
に変更する。config/environments/test.rb
のconfig.serve_static_assets = true
をconfig.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 までご連絡ください。