The "has_key?" routine in Chef::Node::Attribute actually fetches the value, instead of checking for it's existence. If the value is false/nil, then it doesn't exist. Chef gets a "method not found" when trying to access Ohai attributes that are false (using the node.blah.blah notation. It works with node.blah[:blah] notation).