lib/rib/shell.rb in rib-1.5.2 vs lib/rib/shell.rb in rib-1.5.3

- old
+ new

@@ -2,11 +2,10 @@ require 'rib/plugin' require 'rib/api' module Rib; class Shell include API - trap('INT'){ raise Interrupt } def self.use mod include mod end @@ -45,19 +44,20 @@ end # Loops shell until user exits def loop before_loop + set_trap start in_loop stop self rescue Exception => e Rib.warn("Error while running loop:\n #{format_error(e)}") raise ensure - + release_trap after_loop end def start @running = true @@ -75,9 +75,17 @@ @warnings ||= [] end protected attr_writer :config + + def set_trap + @trap_proc = trap('INT'){ raise Interrupt } + end + + def release_trap + trap('INT', &@trap_proc) if @trap_proc.kind_of?(Proc) + end private # Avoid namespace pollution from rubygems bin stub. # To be specific, version and str. def new_private_binding