Module: Async::Await

Defined in:
lib/async/await.rb,
lib/async/await/methods.rb,
lib/async/await/version.rb

Defined Under Namespace

Modules: Methods

Constant Summary collapse

VERSION =
"0.3.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



26
27
28
29
# File 'lib/async/await.rb', line 26

def self.included(klass)
  klass.include(Methods)
  klass.extend(self)
end

Instance Method Details

#async(name) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/async/await.rb', line 31

def async(name)
  original_method = instance_method(name)
  
  remove_method(name)
  
  define_method(name) do |*args|
    Async::Reactor.run do |task|
      original_method.bind(self).call(*args)
    end
  end
end