Method: Zoidberg::SoftShell#async
- Defined in:
- lib/zoidberg/shell.rb
#async(locked = false, &block) ⇒ AsyncProxy, NilClass
Perform an async action
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/zoidberg/shell.rb', line 54 def async(locked=false, &block) if(block_given?) unless(locked) thread = ::Thread.new do begin self.instance_exec(&block) rescue ::StandardError, ::ScriptError => e current_self._zoidberg_unexpected_error(e) raise end end else thread = ::Thread.new do begin current_self.instance_exec(&block) rescue ::StandardError, ::ScriptError => e current_self._zoidberg_unexpected_error(e) raise end end end _zoidberg_thread(thread) nil else ::Zoidberg::SoftShell::AsyncProxy.new(locked ? current_self : self, current_self) end end |