Class: Jazari::Recipe
- Inherits:
-
Data
- Object
- Data
- Jazari::Recipe
- Defined in:
- lib/jazari/recipe.rb
Overview
The canon. Content is data, not code — the gem ships no recipe content at all, only this shape and the empty fallback. Editing a recipe changes its digest, so outstanding default revisions conflict instead of drifting silently under someone who is mid-checklist.
Instance Attribute Summary collapse
-
#checklist ⇒ Object
readonly
Returns the value of attribute checklist.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#run_policy ⇒ Object
readonly
Returns the value of attribute run_policy.
-
#topic ⇒ Object
readonly
Returns the value of attribute topic.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
- #digest ⇒ Object
-
#initialize(id:, version:, topic:, description:, checklist:, run_policy: RunPolicy::UNRESTRICTED) ⇒ Recipe
constructor
A new instance of Recipe.
- #once_per_calendar_day? ⇒ Boolean
- #provenance ⇒ Object
Constructor Details
#initialize(id:, version:, topic:, description:, checklist:, run_policy: RunPolicy::UNRESTRICTED) ⇒ Recipe
Returns a new instance of Recipe.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/jazari/recipe.rb', line 21 def initialize(id:, version:, topic:, description:, checklist:, run_policy: RunPolicy::UNRESTRICTED) unless RunPolicy::ALL.include?(run_policy) raise InvalidRunbook, "unknown run_policy #{run_policy.inspect}" end super( id: id.freeze, version: version, topic: topic.freeze, description: description.freeze, checklist: Checklist.freeze_items(checklist), run_policy: run_policy.freeze ) end |
Instance Attribute Details
#checklist ⇒ Object (readonly)
Returns the value of attribute checklist
20 21 22 |
# File 'lib/jazari/recipe.rb', line 20 def checklist @checklist end |
#description ⇒ Object (readonly)
Returns the value of attribute description
20 21 22 |
# File 'lib/jazari/recipe.rb', line 20 def description @description end |
#id ⇒ Object (readonly)
Returns the value of attribute id
20 21 22 |
# File 'lib/jazari/recipe.rb', line 20 def id @id end |
#run_policy ⇒ Object (readonly)
Returns the value of attribute run_policy
20 21 22 |
# File 'lib/jazari/recipe.rb', line 20 def run_policy @run_policy end |
#topic ⇒ Object (readonly)
Returns the value of attribute topic
20 21 22 |
# File 'lib/jazari/recipe.rb', line 20 def topic @topic end |
#version ⇒ Object (readonly)
Returns the value of attribute version
20 21 22 |
# File 'lib/jazari/recipe.rb', line 20 def version @version end |
Instance Method Details
#digest ⇒ Object
34 35 36 37 38 |
# File 'lib/jazari/recipe.rb', line 34 def digest Digest::SHA256.hexdigest( JSON.generate([ id, version, topic, description, checklist, run_policy ]) )[0, 16] end |
#once_per_calendar_day? ⇒ Boolean
40 |
# File 'lib/jazari/recipe.rb', line 40 def once_per_calendar_day? = run_policy == RunPolicy::ONCE_PER_CALENDAR_DAY |
#provenance ⇒ Object
42 |
# File 'lib/jazari/recipe.rb', line 42 def provenance = { id: id, version: version, digest: digest } |