class Contracts::Invariants::Invariant
Public Class Methods
failure_callback(data)
click to toggle source
# File lib/contracts/invariants.rb, line 59 def self.failure_callback(data) raise InvariantError, failure_msg(data) end
failure_msg(data)
click to toggle source
# File lib/contracts/invariants.rb, line 63 def self.failure_msg(data) %{Invariant violation: Expected: #{data[:expected]} Actual: #{data[:actual]} Value guarded in: #{data[:target].class}::#{Support.method_name(data[:method])} At: #{Support.method_position(data[:method])}} end
new(klass, name, &condition)
click to toggle source
# File lib/contracts/invariants.rb, line 38 def initialize(klass, name, &condition) @klass = klass @name = name @condition = condition end
Public Instance Methods
check_on(target, method)
click to toggle source
# File lib/contracts/invariants.rb, line 48 def check_on(target, method) return if target.instance_eval(&@condition) self.class.failure_callback( :expected => expected, :actual => false, :target => target, :method => method ) end
expected()
click to toggle source
# File lib/contracts/invariants.rb, line 44 def expected "#{@name} condition to be true" end