Parent

Methods

Class/Module Index [+]

Quicksearch

NilClass

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

Ruby raises NoMethodError if you invoke a method on an object that does not respond to it:

$ ruby -e nil.destroy
-e:1: undefined method `destroy' for nil:NilClass (NoMethodError)

With these extensions, if the method belongs to the public interface of the classes in NilClass::WHINERS the error message suggests which could be the actual intended class:

$ script/runner nil.destroy 
...
You might have expected an instance of ActiveRecord::Base.
...

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 Instance Methods

id() click to toggle source

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

# File lib/active_support/whiny_nil.rb, line 40
def id
  raise RuntimeError, "Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id", caller
end
try(*args) click to toggle source
# File lib/active_support/core_ext/try.rb, line 33
def try(*args)
  nil
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.