ソースリーディングしているGemの中で、接続開始したタイミングでセッションをkillするスクリプトがあったのをきっかけに調べた。
https://docs.ruby-lang.org/ja/latest/method/ObjectSpace/m/define_finalizer.html🔗
class Foo def Foo.callback proc { puts 'bar' } end
def initialize ObjectSpace.define_finalizer(self, Foo.callback) end
def hoge puts 'hoge' endend
Foo.newFoo.new.hoge
$ ruby define_finalizer_sample.rb
hogebarbar
そのオブジェクトが解放されたタイミングで実行される処理を登録することができる。読んだソースの中では、先の通りセッションを開いたタイミングで対象のpidを指定してセッションのkillを予約している構造になっていた。