class Porch::Context
Attributes
message[R]
Public Class Methods
new(context={}, success=true)
click to toggle source
# File lib/porch/context.rb, line 9 def initialize(context={}, success=true) @message = nil @success = success @skip_remaining = false deep_duplicate(context) end
Public Instance Methods
deep_dup()
click to toggle source
# File lib/porch/context.rb, line 16 def deep_dup self.class.new(self, self.success?) end
fail!(message="")
click to toggle source
# File lib/porch/context.rb, line 20 def fail!(message="") @message = message @success = false raise Porch::ContextStoppedError.new(self) end
failure?()
click to toggle source
# File lib/porch/context.rb, line 26 def failure? !success? end
guard_with_failure(&block)
click to toggle source
# File lib/porch/context.rb, line 36 def guard_with_failure(&block) result = guard &block fail!(HumanError.new(result.errors).message) if result.failure? result end
guard_with_skipping(&block)
click to toggle source
# File lib/porch/context.rb, line 30 def guard_with_skipping(&block) result = guard &block skip_remaining! if result.failure? result end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/porch/context.rb, line 42 def method_missing(name, *args, &block) return fetch(name) if key?(name) super end
skip_next(&block)
click to toggle source
# File lib/porch/context.rb, line 47 def skip_next(&block) result = Guard.new(self).against(&block) raise Porch::ContextStoppedError.new(self) if result.failure? result end
skip_remaining!()
click to toggle source
# File lib/porch/context.rb, line 57 def skip_remaining! @skip_remaining = true raise Porch::ContextStoppedError.new(self) end
skip_remaining?()
click to toggle source
# File lib/porch/context.rb, line 53 def skip_remaining? !!@skip_remaining end
stop_processing?()
click to toggle source
# File lib/porch/context.rb, line 66 def stop_processing? failure? || skip_remaining? end
success?()
click to toggle source
# File lib/porch/context.rb, line 62 def success? @success end
Private Instance Methods
deep_duplicate(context)
click to toggle source
# File lib/porch/context.rb, line 72 def deep_duplicate(context) (context || {}).to_hash.each { |k, v| self[k] = v } self end