Sha256: 1e8c7353bfec31502f7e481c42aa00249a3d4077b2ccd5e2d210c1e4bd9cc1cc
Contents?: true
Size: 996 Bytes
Versions: 5
Compression:
Stored size: 996 Bytes
Contents
class TaskHandler if RUBY_PLATFORM == 'opal' # On the front-end we setup a proxy class to the backend that returns # promises for all calls. def self.method_missing(name, *args, &block) $page.tasks.call(self.name, name, *args, &block) end else def initialize(channel=nil, dispatcher=nil) @channel = channel @dispatcher = dispatcher end def self.inherited(subclass) @subclasses ||= [] @subclasses << subclass end def self.known_handlers @subclasses ||= [] end # On the backend, we proxy all class methods like we would # on the front-end. This returns promises. def self.method_missing(name, *args, &block) promise = Promise.new begin result = self.new(nil, nil).send(name, *args, &block) promise.resolve(result) rescue => e puts "Task Error: #{e.inspect}" puts e.backtrace promise.reject(e) end return promise end end end
Version data entries
5 entries across 5 versions & 1 rubygems