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-3.2.2 lib/tracksperanto/safety.rb
tracksperanto-3.2.1 lib/tracksperanto/safety.rb
tracksperanto-3.2.0 lib/tracksperanto/safety.rb
tracksperanto-3.1.0 lib/tracksperanto/safety.rb
tracksperanto-3.0.1 lib/tracksperanto/safety.rb
tracksperanto-3.0.0 lib/tracksperanto/safety.rb
tracksperanto-2.12.0 lib/tracksperanto/safety.rb
tracksperanto-2.11.3 lib/tracksperanto/safety.rb
tracksperanto-2.11.2 lib/tracksperanto/safety.rb
tracksperanto-2.11.1 lib/tracksperanto/safety.rb
tracksperanto-2.11.0 lib/tracksperanto/safety.rb
tracksperanto-2.10.0 lib/tracksperanto/safety.rb
tracksperanto-2.9.9 lib/tracksperanto/safety.rb
tracksperanto-2.9.8 lib/tracksperanto/safety.rb
tracksperanto-2.9.7 lib/tracksperanto/safety.rb
tracksperanto-2.9.6 lib/tracksperanto/safety.rb
tracksperanto-2.9.5 lib/tracksperanto/safety.rb
tracksperanto-2.9.4 lib/tracksperanto/safety.rb
tracksperanto-2.9.3 lib/tracksperanto/safety.rb
tracksperanto-2.9.2 lib/tracksperanto/safety.rb