处理系统信号
self_read, self_write = IO.pipe
%w(INT TERM USR1 USR2 TTIN).each do |sig|
trap sig do
self_write.puts(sig)
end
end
while readable_io = IO.select([self_read])
signal = readable_io.first[0].gets.strip
handle_signal(signal)
end
13年9月17日星期二
链式调用实现(2)
def invoke(*args, &final_action)
chain = retrieve.dup
traverse_chain = lambda do
if chain.empty?
final_action.call
else
chain.shift.call(*args, &traverse_chain)
end
end
traverse_chain.call
end
13年9月17日星期二