読者です 読者をやめる 読者になる 読者になる

rubocop v0.35.1 でruby 2.3のSafe navigation operator(&.) を使うとunexpected token tDOTが発生する

ruby rails

タイトルの通り、 &. を使うとエラーが出てたので対応方法を紹介します。

Inspecting 1 file
E

Offenses:

app/models/user.rb:11:21: E: unexpected token tDOT
    user.piyo if user&.admin?
                    ^

1 file inspected, 1 offense detected

対応 1

bbatsov/rubocop のmasterでは修正されているので、GitHubからインストールすれば動く。

gem 'rubocop', require: false, github: 'bbatsov/rubocop'

ただし、masterで新しいCopなどが追加されているので、必要であれば修正(もしくは rubocop --auto-gen-config)が必要。
また、Railsエンジニアの人はRunRailsCop の設定方法が変わっているので注意。

 AllCops:
   DisplayCopNames: true
-  RunRailsCops: true
+
+Rails:
+  Enabled: true

方法 2

コミットログを追ってみると、どうも #2498 で修正されたっぽい。 なので、現在の安定版である v0.35.1 に #2498 の変更だけを取り入れたブランチを作った。

gem 'rubocop', require: false, github: 'sinsoku/rubocop', branch: 'for_lonely_operator'

master使うの面倒な人はどうぞ。