Sha256: d3e0b9bd8ea057b7e268a936fa072d0f117254c5c271e2b4b72da3750ae038c4

Contents?: true

Size: 606 Bytes

Versions: 42

Compression:

Stored size: 606 Bytes

Contents

# -*- encoding : utf-8 -*-
# Implements the +safe_reader+ class method which will define (or override) readers that
# raise if ivar is nil
module Tracksperanto::Safety
  def self.included(into)
    into.extend(self)
    super
  end
  
  # Inject a reader that checks for nil
  def safe_reader(*attributes)
    attributes.each do | an_attr |
      alias_method "#{an_attr}_without_nil_protection", an_attr
      define_method(an_attr) do
        val = send("#{an_attr}_without_nil_protection")
        raise "Expected #{an_attr} on #{self} not to be nil" if val.nil?
        val
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
tracksperanto-2.9.1 lib/tracksperanto/safety.rb
tracksperanto-2.9.0 lib/tracksperanto/safety.rb