追記

私が”Socket”と”割り込み”に関して知識がこんがらがっていて、下記の質問内容がおかしくなっています。割り込みを使ってGPIOの値の取得を行う方法を教えて下さい。

---- 以下元の質問文 ---

Raspberry Piでボタンを繋げて押した時に特定の動作をするように以下の様なコードで行っているのですが、自分からvalueファイルを読みにいくのではなくSocketを使い、変更があった時にだけ受け取るような書き方のほうが良いとアドバイスされました。

class Switch
  def initialize(gpio:)
    @gpio = gpio
  end
  def update_status
    case File.read("/sys/class/gpio/gpio#{@gpio}/value").to_i
      when 0 then
        unpush
      when 1 then
        push
    end
  end
  def unpush
  end
  def push
  end
end
switch = Switch.new(gpio: 24)
loop do
  switch.update_status
  sleep(0.1)
end

それでドキュメントの[Socket][1]項目を読んでみてSocket.sockaddr_unを使うのかというアタリはつけたのですが、具体的な使い方がわかりません…。

今回のような場合はどのようにSocketが使えるのでしょうか?