ikuma-t.

登壇 登壇 検索

ObjectSpace.#define_finalizer

ソースリーディングしている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'
end
end
Foo.new
Foo.new.hoge
Terminal window
$ ruby define_finalizer_sample.rb
hoge
bar
bar

そのオブジェクトが解放されたタイミングで実行される処理を登録することができる。読んだソースの中では、先の通りセッションを開いたタイミングで対象のpidを指定してセッションのkillを予約している構造になっていた。

ikuma-t

ikuma-t

about

9割笑顔、1割 (´・ω・)