module Symbiont::Ready
Attributes
ready[RW]
ready_error[RW]
Public Class Methods
included(caller)
click to toggle source
# File lib/symbiont/ready.rb, line 25 def self.included(caller) caller.extend(ClassMethods) end
Public Instance Methods
ready?()
click to toggle source
# File lib/symbiont/ready.rb, line 43 def ready? self.ready_error = nil return true if ready ready_validations_pass? end
ready_validations_pass?()
click to toggle source
# File lib/symbiont/ready.rb, line 49 def ready_validations_pass? self.class.ready_validations.all? do |validation| passed, message = instance_eval(&validation) self.ready_error = message if message && !passed passed end end
when_ready(&block)
click to toggle source
# File lib/symbiont/ready.rb, line 29 def when_ready(&block) already_marked_ready = ready fail(ArgumentError, 'A block is required for a when_ready action.') unless block_given? unless self.ready = ready? message = "Failed to validate because: #{ready_error || 'no reason provided'}" fail(::Symbiont::Errors::PageNotValidatedError, message) end block.call self ensure self.ready = already_marked_ready end