Class: Insika::EnvSchema::Spec
- Inherits:
-
Data
- Object
- Data
- Insika::EnvSchema::Spec
- Defined in:
- lib/insika/env_schema.rb
Overview
One env key the engine knows about. type drives validation; secret masks
the value in insika env; enum restricts allowed values; required makes
a blank value a finding (engine keys are all optional — deployment resilience —
so required is used by deployment extras, not the defaults here).
Instance Attribute Summary collapse
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#enum ⇒ Object
readonly
Returns the value of attribute enum.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#required ⇒ Object
readonly
Returns the value of attribute required.
-
#secret ⇒ Object
readonly
Returns the value of attribute secret.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Instance Method Summary collapse
-
#error_for(raw) ⇒ Object
nil/blank when optional -> no finding.
- #required? ⇒ Boolean
- #secret? ⇒ Boolean
Instance Attribute Details
#description ⇒ Object (readonly)
Returns the value of attribute description
39 40 41 |
# File 'lib/insika/env_schema.rb', line 39 def description @description end |
#enum ⇒ Object (readonly)
Returns the value of attribute enum
39 40 41 |
# File 'lib/insika/env_schema.rb', line 39 def enum @enum end |
#name ⇒ Object (readonly)
Returns the value of attribute name
39 40 41 |
# File 'lib/insika/env_schema.rb', line 39 def name @name end |
#required ⇒ Object (readonly)
Returns the value of attribute required
39 40 41 |
# File 'lib/insika/env_schema.rb', line 39 def required @required end |
#secret ⇒ Object (readonly)
Returns the value of attribute secret
39 40 41 |
# File 'lib/insika/env_schema.rb', line 39 def secret @secret end |
#type ⇒ Object (readonly)
Returns the value of attribute type
39 40 41 |
# File 'lib/insika/env_schema.rb', line 39 def type @type end |
Instance Method Details
#error_for(raw) ⇒ Object
nil/blank when optional -> no finding. Present -> must satisfy the type. -> error string or nil.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/insika/env_schema.rb', line 45 def error_for(raw) value = raw.to_s return "is required (unset)" if value.strip.empty? && required return nil if value.strip.empty? case type when :integer "must be an integer, got #{value.inspect}" unless value.match?(/\A-?\d+\z/) when :boolean "must be a boolean (#{BOOLEANS.join('/')}), got #{value.inspect}" unless EnvSchema.boolean?(value) when :enum "must be one of #{enum.inspect}, got #{value.inspect}" unless Array(enum).include?(value) when :url "must be an http(s) URL, got #{value.inspect}" unless value.match?(%r{\Ahttps?://\S+\z}) end # :string / :csv / :path -> any string is valid end |
#required? ⇒ Boolean
41 |
# File 'lib/insika/env_schema.rb', line 41 def required? = required |
#secret? ⇒ Boolean
40 |
# File 'lib/insika/env_schema.rb', line 40 def secret? = secret |