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
|
class Railtie < Rails::Railtie
|
||||||
config.active_support = ActiveSupport::OrderedOptions.new
|
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|
|
initializer "active_support.deprecation_behavior" do |app|
|
||||||
if deprecation = app.config.active_support.deprecation
|
if deprecation = app.config.active_support.deprecation
|
||||||
ActiveSupport::Deprecation.behavior = 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,
|
:force_ssl, :helpers_paths, :logger, :log_tags, :preload_frameworks,
|
||||||
:railties_order, :relative_url_root, :reload_plugins, :secret_token,
|
:railties_order, :relative_url_root, :reload_plugins, :secret_token,
|
||||||
:serve_static_assets, :ssl_options, :static_cache_control, :session_options,
|
: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_writer :log_level
|
||||||
attr_reader :encoding
|
attr_reader :encoding
|
||||||
|
@ -145,6 +145,11 @@ module Rails
|
||||||
@session_options = args.shift || {}
|
@session_options = args.shift || {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def whiny_nils=(*)
|
||||||
|
ActiveSupport::Deprecation.warn "config.whiny_nils option " \
|
||||||
|
"is deprecated and no longer works", caller
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,9 +6,6 @@
|
||||||
# since you don't have to restart the web server when you make code changes.
|
# since you don't have to restart the web server when you make code changes.
|
||||||
config.cache_classes = false
|
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
|
# Show full error reports and disable caching
|
||||||
config.consider_all_requests_local = true
|
config.consider_all_requests_local = true
|
||||||
config.action_controller.perform_caching = false
|
config.action_controller.perform_caching = false
|
||||||
|
|
|
@ -11,9 +11,6 @@
|
||||||
config.serve_static_assets = true
|
config.serve_static_assets = true
|
||||||
config.static_cache_control = "public, max-age=3600"
|
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
|
# Show full error reports and disable caching
|
||||||
config.consider_all_requests_local = true
|
config.consider_all_requests_local = true
|
||||||
config.action_controller.perform_caching = false
|
config.action_controller.perform_caching = false
|
||||||
|
|
Loading…
Reference in a new issue