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