mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
remove AS whiny nil extension and deprecate config.whiny_nils
This commit is contained in:
parent
667d7aa61d
commit
4f6af26a88
6 changed files with 6 additions and 46 deletions
|
@ -5,12 +5,6 @@ module ActiveSupport
|
|||
class Railtie < Rails::Railtie
|
||||
config.active_support = ActiveSupport::OrderedOptions.new
|
||||
|
||||
# Loads support for "whiny nil" (noisy warnings when methods are invoked
|
||||
# on +nil+ values) if Configuration#whiny_nils is true.
|
||||
initializer "active_support.initialize_whiny_nils" do |app|
|
||||
require 'active_support/whiny_nil' if app.config.whiny_nils
|
||||
end
|
||||
|
||||
initializer "active_support.deprecation_behavior" do |app|
|
||||
if deprecation = app.config.active_support.deprecation
|
||||
ActiveSupport::Deprecation.behavior = deprecation
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
# 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 <tt>config.whiny_nils</tt> determines whether this feature is enabled.
|
||||
# By default it is on in development and test modes, and it is off in production
|
||||
# mode.
|
||||
class NilClass
|
||||
def self.add_whiner(klass)
|
||||
ActiveSupport::Deprecation.warn "NilClass.add_whiner is deprecated and this functionality is " \
|
||||
"removed from Rails versions as it affects Ruby 1.9 performance.", caller
|
||||
end
|
||||
|
||||
# Raises a RuntimeError when you attempt to call +id+ on +nil+.
|
||||
def id
|
||||
raise RuntimeError, "Called id for nil, which would mistakenly be #{object_id} -- if you really wanted the id of nil, use object_id", caller
|
||||
end
|
||||
end
|
|
@ -1,11 +0,0 @@
|
|||
require 'abstract_unit'
|
||||
require 'active_support/whiny_nil'
|
||||
|
||||
class WhinyNilTest < Test::Unit::TestCase
|
||||
def test_id
|
||||
nil.id
|
||||
rescue RuntimeError => nme
|
||||
assert_no_match(/nil:NilClass/, nme.message)
|
||||
assert_match(Regexp.new(nil.object_id.to_s), nme.message)
|
||||
end
|
||||
end
|
|
@ -12,7 +12,7 @@ module Rails
|
|||
:force_ssl, :helpers_paths, :logger, :log_tags, :preload_frameworks,
|
||||
:railties_order, :relative_url_root, :reload_plugins, :secret_token,
|
||||
:serve_static_assets, :ssl_options, :static_cache_control, :session_options,
|
||||
:time_zone, :reload_classes_only_on_change, :whiny_nils
|
||||
:time_zone, :reload_classes_only_on_change
|
||||
|
||||
attr_writer :log_level
|
||||
attr_reader :encoding
|
||||
|
@ -145,6 +145,11 @@ module Rails
|
|||
@session_options = args.shift || {}
|
||||
end
|
||||
end
|
||||
|
||||
def whiny_nils=(*)
|
||||
ActiveSupport::Deprecation.warn "config.whiny_nils option " \
|
||||
"is deprecated and no longer works", caller
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,9 +6,6 @@
|
|||
# since you don't have to restart the web server when you make code changes.
|
||||
config.cache_classes = false
|
||||
|
||||
# Log error messages when you accidentally call methods on nil.
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
config.serve_static_assets = true
|
||||
config.static_cache_control = "public, max-age=3600"
|
||||
|
||||
# Log error messages when you accidentally call methods on nil
|
||||
config.whiny_nils = true
|
||||
|
||||
# Show full error reports and disable caching
|
||||
config.consider_all_requests_local = true
|
||||
config.action_controller.perform_caching = false
|
||||
|
|
Loading…
Reference in a new issue