Parent

Class Index [+]

Quicksearch

NilClass

Extensions to nil which allow for more helpful error messages for people who are new to Rails.

NilClass#id exists in Ruby 1.8 (though it is deprecated). Since id is a fundamental method of Active Record models NilClass#id is redefined as well to raise a RuntimeError and warn the user. She probably wanted a model database identifier and the 4 returned by the original method could result in obscure bugs.

The flag config.whiny_nils determines whether this feature is enabled. By default it is on in development and test modes, and it is off in production mode.

Public Class Methods

add_whiner(klass) click to toggle source
    # File lib/active_support/whiny_nil.rb, line 15
15:   def self.add_whiner(klass)
16:     ActiveSupport::Deprecation.warn "NilClass.add_whiner is deprecated and this functionality is "        "removed from Rails versions as it affects Ruby 1.9 performance.", caller
17:   end

Public Instance Methods

as_json(options = nil) click to toggle source
     # File lib/active_support/json/encoding.rb, line 171
171:   def as_json(options = nil) self end
blank?() click to toggle source

nil is blank:

  nil.blank? # => true
    # File lib/active_support/core_ext/object/blank.rb, line 48
48:   def blank?
49:     true
50:   end
duplicable?() click to toggle source

nil is not duplicable:

  nil.duplicable? # => false
  nil.dup         # => TypeError: can't dup NilClass
    # File lib/active_support/core_ext/object/duplicable.rb, line 35
35:   def duplicable?
36:     false
37:   end
encode_json(encoder) click to toggle source
     # File lib/active_support/json/encoding.rb, line 172
172:   def encode_json(encoder) 'null' end
id() click to toggle source

Raises a RuntimeError when you attempt to call id on nil.

    # File lib/active_support/whiny_nil.rb, line 21
21:   def id
22:     raise RuntimeError, "Called id for nil, which would mistakenly be #{object_id} -- if you really wanted the id of nil, use object_id", caller
23:   end
to_param() click to toggle source
    # File lib/active_support/core_ext/object/to_param.rb, line 9
 9:   def to_param
10:     self
11:   end
try(*args) click to toggle source

Calling try on nil always returns nil. It becomes specially helpful when navigating through associations that may return nil.

Examples

  nil.try(:name) # => nil

Without try

  @person && !@person.children.blank? && @person.children.first.name

With try

  @person.try(:children).try(:first).try(:name)
    # File lib/active_support/core_ext/object/try.rb, line 54
54:   def try(*args)
55:     nil
56:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.