devise 3.0.3 と devise 3.1.0 で自動生成されるファイルの差分 をとって、バージョンアップした時に対応が必要な場所を調べました。
対応が必要な場所
最初に結論をまとめておきます。
-
config/initializers/devise.rbにconfig.secret_keyを追加。- これは
railsコマンドを実行しようとした時などにエラーとどういう内容を追加すれば良いのかが出るのですぐに気付きます。
- これは
-
rails generate devise:viewsをしていたのなら-
app/views/devise/mailerのtoken周り -
app/views/devise/shared/_links.erbのdevise_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 list と devise 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_count と failed_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.erb の if devise_mapping.recoverable? && controller_name != 'passwords' が if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' に変わっているのが 主な変更でした。