Open3

CurrentAttributes がバグっている

Ohkubo KOHEIOhkubo KOHEI

https://api.rubyonrails.org/classes/ActiveSupport/CurrentAttributes.html

確認した事象
ApplicationController で Current.user に ActiveRecord インスタンスを保存し、 controller で参照している。
rspec で controller 全体のテストを実行するとコケる。こけた箇所単体では問題ない。

セットした箇所

    p 'set_current', @user.id, syscall(186), Thread.current.object_id

参照箇所

    unless (Current.user.reload rescue nil)
      p 'not current', Current.user.id, syscall(186), Thread.current.object_id
      raise 'not current'
    end
end

出力

"set_current"
258
31926
9140
"not current"
250
31926
9140

なお、表示されている存在しない 250 は、先に実行されたテストで生成されていたもの。明らかに何かおかしい。