def add_irb_trap
Merb.trap("INT") do
if @interrupted
Merb.logger.warn! "Interrupt received a second time, exiting!\n"
exit
end
@interrupted = true
Merb.logger.warn! "Interrupt a second time to quit."
Kernel.sleep 1.5
ARGV.clear
if @irb.nil?
require "irb"
IRB.setup(nil)
@irb = IRB::Irb.new(nil)
IRB.conf[:MAIN_CONTEXT] = @irb.context
end
Merb.trap(:INT) { @irb.signal_handle }
catch(:IRB_EXIT) { @irb.eval_input }
Merb.logger.warn! "Exiting from IRB mode back into server mode."
@interrupted = false
add_irb_trap
end
end