class RFacter::Util::NonNullable
Non-nullable thread local variable
A Subclass of Concurrent::ThreadLocalVar that raises a NameError if de-referenced to `nil`. This allows the creation of variables that must always be bound to a specific value before use.
@api private @since 0.1.0
Public Class Methods
new(default = nil, err_message:, &default_block)
click to toggle source
@param err_message [String] The error message to raise if
the instance is de-referenced to a `nil` value.
Calls superclass method
# File lib/rfacter/util/non_nullable.rb, line 16 def initialize(default = nil, err_message:, &default_block) @err_message = err_message super(default, &default_block) end
Public Instance Methods
bind(value) { || ... }
click to toggle source
# File lib/rfacter/util/non_nullable.rb, line 27 def bind(value, &block) if block_given? old_value = nillable_value begin self.value = value yield ensure self.value = old_value end end end
nillable_value()
Private reference to the superclass `value` method that won't raise an error. Allows the `bind` method to re-set the variable to nil at the end of an operation.
Alias for: value
value()
click to toggle source
@raise [NameError] when de-referenced to `nil`.
Calls superclass method
# File lib/rfacter/util/non_nullable.rb, line 40 def value result = super raise(NameError, @err_message) if result.nil? result end
Also aliased as: nillable_value