Sha256: 0cce70599ed1d4847c08e89185d72a28f1de0f4b633714c86f25474927044b8d
Contents?: true
Size: 817 Bytes
Versions: 10
Compression:
Stored size: 817 Bytes
Contents
# encoding: UTF-8 require 'fiber' module Spontaneous::Plugins::Application module System extend Spontaneous::Concern module ClassMethods def async? defined?(::EM) && ::EM.reactor_running? end def system(cmd, timeout = 10, &callback) if async? async_system(cmd, &callback) else result = super(cmd) callback.call(result) if callback end end # Invokes an asynchronous system call def async_system(cmd, timeout = 10, &callback) deferrable = EM::DefaultDeferrable.new EM.system cmd do |output, status| deferrable.succeed(output, status) end deferrable.timeout timeout deferrable.errback { } deferrable.callback(&callback) end end end end
Version data entries
10 entries across 10 versions & 1 rubygems