forbidden = Proc.new{raise WEBrick::HTTPStatus::Forbidden}
acl = Proc.new{|req, res|
client_ip = IPAddr.new(req.peeraddr[3])
allowed_ips.find(forbidden) do |ip|
IPAddr.new(ip).include?(client_ip)
end
}
こんな感じかなぁ。
[追記] 例外をあらゆるなきものにすると find の引数が意味をなさないので、 begin ~ rescue ~ end を消しました。まぁ、例外が出れば 500 なので、そんなもんでしょう。