Devise を使った Rails アプリケーションで Ruby 2.5.0-preview1 を使った際に発生する以下のエラーを解消するための Devise の Forked patch となる。
[::1] SyntaxError (/Users/koic/.rbenv/versions/2.5.0-dev/lib/ruby/gems/2.5.0/gems/devise-4.3.0/app/controllers/devise/sessions_controller.rb:5: syntax error, unexpected '{', expecting keyword_end ...ion only: [:create, :destroy] { request.env["devise.skip_tim... ... ^ /Users/koic/.rbenv/versions/2.5.0-dev/lib/ruby/gems/2.5.0/gems/devise-4.3.0/app/controllers/devise/sessions_controller.rb:5: syntax error, unexpected '}', expecting keyword_end ..."devise.skip_timeout"] = true } ... ^):
その Forked patch で解消するには Gemfile あるいは gems.rb に記している devise の箇所を以下のようにする。
# Use devise from a branch of koic/devise until devise 4.3.1 or higher. gem 'devise', github: 'koic/devise', branch: 'fix_syntax_error_for_ruby_2_5_0_preview1'
元にしたパッチ自体は pat さんが投げてくれていて既にマージもされている。
簡単なものなので、いちおうそのときの手順を書いておく。
g co -b fix_syntax_error_for_ruby_2_5_0_preview1 refs/tags/v4.3.0 g cherry-pick 1009096172f2cbc86bcd54d053c89a09be67fb9f
このように 2017年10月18日時点で最新の Devise 4.3.0 にそのパッチだけ充てたもので、次の devise (4.3.1 かな?) になれば upstream に入っていると思うので本流を使って良くなると思っている。
あわせて知っておきたい bugs への k0kubun さんのレポート。