Rubyで、今まで2度ぐらいこんな感じの処理を書いてしまったことがある。

class Foo
  attr_accessor :attr
  def initialize
    self.attr = 'default'
  end
  def func(arg = nil)
    attr = arg.presence || attr
  end
end

foo = Foo.new
puts foo.func('arg') # arg
puts foo.func # nil

最後の行のfoo.funcではargを渡していないので、defaultが出力されることを期待している。

    attr = arg.presence || self.attr

こう書かないとダメ。(selfが必要)

そして本当はこんなコード書いちゃダメ。
戒めとして残しておく。