Class: PromptCanary::Version
- Inherits:
-
Object
- Object
- PromptCanary::Version
- Defined in:
- lib/prompt_canary/version_object.rb
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#rollback_rules ⇒ Object
readonly
Returns the value of attribute rollback_rules.
-
#rollout ⇒ Object
readonly
Returns the value of attribute rollout.
-
#system ⇒ Object
readonly
Returns the value of attribute system.
Instance Method Summary collapse
- #demote! ⇒ Object
- #demoted? ⇒ Boolean
-
#initialize(name:, model:, system:, rollout:, predicate: nil, rollback_rules: []) ⇒ Version
constructor
A new instance of Version.
- #matches_predicate?(context) ⇒ Boolean
- #partial_rollout? ⇒ Boolean
- #predicate? ⇒ Boolean
- #restore! ⇒ Object
- #routes?(key) ⇒ Boolean
- #set_rollout!(percent) ⇒ Object
- #system_for(args = {}) ⇒ Object
Constructor Details
#initialize(name:, model:, system:, rollout:, predicate: nil, rollback_rules: []) ⇒ Version
Returns a new instance of Version.
9 10 11 12 13 14 15 16 |
# File 'lib/prompt_canary/version_object.rb', line 9 def initialize(name:, model:, system:, rollout:, predicate: nil, rollback_rules: []) @name = name @model = model @system = system @rollout = rollout @predicate = predicate @rollback_rules = rollback_rules end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
7 8 9 |
# File 'lib/prompt_canary/version_object.rb', line 7 def model @model end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/prompt_canary/version_object.rb', line 7 def name @name end |
#rollback_rules ⇒ Object (readonly)
Returns the value of attribute rollback_rules.
7 8 9 |
# File 'lib/prompt_canary/version_object.rb', line 7 def rollback_rules @rollback_rules end |
#rollout ⇒ Object (readonly)
Returns the value of attribute rollout.
7 8 9 |
# File 'lib/prompt_canary/version_object.rb', line 7 def rollout @rollout end |
#system ⇒ Object (readonly)
Returns the value of attribute system.
7 8 9 |
# File 'lib/prompt_canary/version_object.rb', line 7 def system @system end |
Instance Method Details
#demote! ⇒ Object
51 52 53 54 55 |
# File 'lib/prompt_canary/version_object.rb', line 51 def demote! @demoted = true @previous_rollout = @rollout.fetch(:percent, 0) @rollout = { percent: 0 } end |
#demoted? ⇒ Boolean
47 48 49 |
# File 'lib/prompt_canary/version_object.rb', line 47 def demoted? @demoted || false end |
#matches_predicate?(context) ⇒ Boolean
26 27 28 29 30 31 32 |
# File 'lib/prompt_canary/version_object.rb', line 26 def matches_predicate?(context) return false unless @predicate @predicate.call(context) rescue StandardError false end |
#partial_rollout? ⇒ Boolean
34 35 36 |
# File 'lib/prompt_canary/version_object.rb', line 34 def partial_rollout? rollout.fetch(:percent, 0).positive? end |
#predicate? ⇒ Boolean
22 23 24 |
# File 'lib/prompt_canary/version_object.rb', line 22 def predicate? !@predicate.nil? end |
#restore! ⇒ Object
57 58 59 60 61 |
# File 'lib/prompt_canary/version_object.rb', line 57 def restore! @demoted = false @rollout = { percent: @previous_rollout || 0 } @previous_rollout = nil end |
#routes?(key) ⇒ Boolean
38 39 40 41 |
# File 'lib/prompt_canary/version_object.rb', line 38 def routes?(key) roll = Zlib.crc32(key.to_s) % 100 roll < rollout.fetch(:percent, 0) end |
#set_rollout!(percent) ⇒ Object
43 44 45 |
# File 'lib/prompt_canary/version_object.rb', line 43 def set_rollout!(percent) @rollout = { percent: percent } end |
#system_for(args = {}) ⇒ Object
18 19 20 |
# File 'lib/prompt_canary/version_object.rb', line 18 def system_for(args = {}) @system.respond_to?(:call) ? @system.call(args) : @system end |