Rails5

Rails4.2 -> Rails5.1.2 にアップグレードした際のメモ

アップグレードガイドにあるものは割愛してます。

依存している gemの更新

bundle update rails

だとら埒があかないため、全部update

quiet_assets は取り込まれたので削除
http://docs.komagata.org/5348

migrationのバージョニング

migrationを作成したバージョンを付与すると最適に振る舞ってくれる

class CreateUsers < ActiveRecord::Migration[4.2]
end

面倒だったけど [4.2] を全部つけた。

attribute_wasがdeprecated

https://github.com/rails/rails/pull/25337#issuecomment-225166796
before と after それぞれのcallbackで値の意味が変わる(save,_createなど)
attribute_in_database は before だと変更前、 after
* だと変更後になる
わかりやすくなったが、メソッドの数が増えて複雑化している。

コントローラのテスト

getなどの引数
https://stackoverflow.com/questions/43797133/controller-spec-unknown-keyword-id
paramsが必須

post :create, params: { name: "hoge" }

一番面倒だった

ActiveSupport::MessageEncryptor

http://nisshiee.hatenablog.jp/entry/2017/04/17/192703
何も考えずにsecretに32バイト以上の文字列を入れていたら、 key must be 32 bytes と怒られた

APIドキュメントのようにKeyGeneratorを使う

ActiveRecord の uniqがdeprecated

http://qiita.com/zenpou/items/950432bae246063786e8#activerecord%E3%81%AEuniq-%E3%81%AF-distinct%E3%81%AB
uniqを呼び出すとArrayが返る。distinctを使う。
とっても怖い仕様変更。

Turbolinks5

ロード時の処理

turbolinks.load を使う
turbolinks-jquery は不要だったので外した

application.rb
$(document).on("turbolinks.load", function() {
});

data-turbolinks-track 属性

trueから"reload"にかえないとダメらしい。

application.html.erb
<%= javascript_include_tag "application", "data-turbolinks-track" => "reload" %>

プログレスバー

https://github.com/turbolinks/turbolinks#displaying-progress

色変えただけ

.turbolinks-progress-bar {
  background-color: #f90;
}

AdminLTE

http://www.takuyai.com/articles/28

  $.AdminLTE.layout.fix();

migration

http://y-yagi.tumblr.com/post/142064773890/rails-5%E3%81%AB%E5%85%A5%E3%81%A3%E3%81%9Fdb%E7%A0%B4%E5%A3%8A%E7%B3%BBtask%E3%81%AE%E9%98%B2%E6%AD%A2%E5%87%A6%E7%90%86%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

破壊防止措置らしい

bin/rails db:environment:set RAILS_ENV=development
bin/rails db:migrate:reset