class Mobx::Transaction

Attributes

scheduled[R]

Public Class Methods

call(block) click to toggle source
# File lib/mobx/transaction.rb, line 10
def self.call(block)
  transaction = self.new(block)
  transaction.call
end
new(block) click to toggle source
# File lib/mobx/transaction.rb, line 5
def initialize(block)
  @block = block
  @scheduled = []
end

Public Instance Methods

call() click to toggle source
# File lib/mobx/transaction.rb, line 15
def call
  Mobx.wrappedOnce(:transaction, self, &@block)

  unless Mobx.in?(:transaction)
    @scheduled.each(&:call)
    @scheduled = []
  end
  self
end
schedule_observer(observer) click to toggle source
# File lib/mobx/transaction.rb, line 29
def schedule_observer(observer)
  @scheduled << observer
  @scheduled.uniq!
end
schedule_observers(observers) click to toggle source
# File lib/mobx/transaction.rb, line 25
def schedule_observers(observers)
  observers.each { |observer| schedule_observer(observer) }
end