devise 3.0.3 と devise 3.1.0 で自動生成されるファイルの差分 をとって、バージョンアップした時に対応が必要な場所を調べました。

対応が必要な場所

最初に結論をまとめておきます。

  • config/initializers/devise.rbconfig.secret_key を追加。
    • これは rails コマンドを実行しようとした時などにエラーとどういう内容を追加すれば良いのかが出るのですぐに気付きます。
  • rails generate devise:views をしていたのなら
    • app/views/devise/mailertoken 周り
    • app/views/devise/shared/_links.erbdevise_mapping.recoverable? の行 の修正が必要です。
  • app/models/user.rb:token_authenticatable の削除の検討
    • 削除しなくても動いているので、すぐに削除する必要はなさそうですが、 rails generate devise User で生成される例からなくなっているので 削除を検討した方が良さそうです。
  • データベースのテーブルの変更に追従するなら migration を作って対応すれば良さそうです。

対象バージョン

rails 3.2.14 との組み合わせで devise 3.0.3 と devise 3.1.0 で比較しました。 細かいバージョンは devise 3.0.3 の時の bundle listdevise 3.1.0 の時の bundle list を参照してください。

rails generate devise:install の差分

rails generate devise:install の差分のうち、 config/initializers/devise.rb の差分" から ' への変更などもあって本質的ではない部分も多かったので、 tr で処理した差分 を作ってみたところ、本質的には config.secret_key = の行の追加だけでした。

config/locales/devise.en.yml の差分 もあるので、 locales のファイルも更新しておくと良さそうです。

rails generate devise User の差分

rails generate devise User の差分として、 migration の差分sign_in_countfailed_attempts への NOT NULL 制約の追加と Token authenticatable 用の authentication_token の削除なので、 対応する変更をする migration を作って対応するか、 気にせず古いまま使えば良さそうです。

app/models/user.rb からもコメントの中のモジュール例にあった token_authenticatable が削除されています。

config/routes.rb に追加される devise_for :users は同じでした。

rails generate devise:views の差分

app/views の差分@resource.なんとか_token だったものが @token に変わっているのと、 app/views/devise/shared/_links.erbif devise_mapping.recoverable? && controller_name != 'passwords'if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' に変わっているのが 主な変更でした。

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published