From dbb547a0565dd216089f35d82fcf17a655897603 Mon Sep 17 00:00:00 2001 From: wycats Date: Tue, 3 Aug 2010 16:03:35 -0700 Subject: Fix up constant deprecation to be less dependent on load order --- railties/lib/rails/deprecation.rb | 73 ++++++++++----------------------------- 1 file changed, 19 insertions(+), 54 deletions(-) (limited to 'railties/lib') diff --git a/railties/lib/rails/deprecation.rb b/railties/lib/rails/deprecation.rb index 1eb6d804b6..924701a326 100644 --- a/railties/lib/rails/deprecation.rb +++ b/railties/lib/rails/deprecation.rb @@ -1,62 +1,27 @@ require "active_support/string_inquirer" -require "active_support/deprecation" +require "active_support/basic_object" -RAILS_ROOT = (Class.new(ActiveSupport::Deprecation::DeprecationProxy) do - cattr_accessor :warned - self.warned = false - - def target - Rails.root - end - - def replace(*args) - warn(caller, :replace, *args) - end - - def warn(callstack, called, args) - unless warned - ActiveSupport::Deprecation.warn("RAILS_ROOT is deprecated! Use Rails.root instead", callstack) - self.warned = true +module Rails + class DeprecatedConstant < ActiveSupport::BasicObject + def self.deprecate(old, new) + constant = self.new(old, new) + eval "::#{old} = constant" end - end -end).new - -RAILS_ENV = (Class.new(ActiveSupport::Deprecation::DeprecationProxy) do - cattr_accessor :warned - self.warned = false - - def target - Rails.env - end - def replace(*args) - warn(caller, :replace, *args) - end - - def warn(callstack, called, args) - unless warned - ActiveSupport::Deprecation.warn("RAILS_ENV is deprecated! Use Rails.env instead", callstack) - self.warned = true + def initialize(old, new) + @old, @new = old, new + @target = eval "proc { #{new} }" + @warned = false end - end -end).new -RAILS_DEFAULT_LOGGER = (Class.new(ActiveSupport::Deprecation::DeprecationProxy) do - cattr_accessor :warned - self.warned = false - - def target - Rails.logger - end - - def replace(*args) - warn(caller, :replace, *args) - end - - def warn(callstack, called, args) - unless warned - ActiveSupport::Deprecation.warn("RAILS_DEFAULT_LOGGER is deprecated! Use Rails.logger instead", callstack) - self.warned = true + def method_missing(meth, *args, &block) + ActiveSupport::Deprecation.warn("#{@old} is deprecated. Please use #{@new}") unless @warned + @warned = true + @target.call.send(meth, *args, &block) end end -end).new + + DeprecatedConstant.deprecate("RAILS_ROOT", "Rails.root") + DeprecatedConstant.deprecate("RAILS_ENV", "Rails.env") + DeprecatedConstant.deprecate("RAILS_DEFAULT_LOGGER", "Rails.logger") +end -- cgit v1.2.3