class Strategize::Rule
The Rule
class represents a predicate function that can be run against a specific subject.
Define a new rule Rule.new
:rule_name, -> { code to execute }
Evaluate a rule rule = Rule.new
:rule_name, -> { true } rule.evaluate(nil) #=> true
Attributes
name[R]
predicate[R]
Public Class Methods
new(name, predicate)
click to toggle source
Create a new rule
@param name [Symbol] a descriptive name for the rule @param predicate [Proc] code block to be executed
# File lib/strategize/rules/rule.rb, line 18 def initialize(name, predicate) unless predicate.respond_to?(:call) raise InvalidPredicateError, 'Invalid predicate function passed' end @name = name @predicate = predicate end
Public Instance Methods
evaluate(subject)
click to toggle source
Execute the predicate against the subject
@param subject [Object] @return [Boolean]
# File lib/strategize/rules/rule.rb, line 31 def evaluate(subject) subject.instance_exec(&@predicate) end