lib/active_support/deprecation/behaviors.rb in activesupport-3.0.pre vs lib/active_support/deprecation/behaviors.rb in activesupport-3.0.0.rc
- old
+ new
@@ -1,38 +1,42 @@
+require "active_support/notifications"
+require "active_support/core_ext/array/wrap"
+
module ActiveSupport
module Deprecation
class << self
- # Behavior is a block that takes a message argument.
- attr_writer :behavior
-
# Whether to print a backtrace along with the warning.
attr_accessor :debug
def behavior
- @behavior ||= default_behavior
+ @behavior ||= [DEFAULT_BEHAVIORS[:stderr]]
end
- def default_behavior
- Deprecation::DEFAULT_BEHAVIORS[defined?(Rails) ? Rails.env.to_s : 'test']
+ def behavior=(behavior)
+ @behavior = Array.wrap(behavior).map { |b| DEFAULT_BEHAVIORS[b] || b }
end
end
- # Default warning behaviors per Rails.env. Ignored in production.
+ # Default warning behaviors per Rails.env.
DEFAULT_BEHAVIORS = {
- 'test' => Proc.new { |message, callstack|
+ :stderr => Proc.new { |message, callstack|
$stderr.puts(message)
$stderr.puts callstack.join("\n ") if debug
},
- 'development' => Proc.new { |message, callstack|
+ :log => Proc.new { |message, callstack|
logger =
if defined?(Rails) && Rails.logger
Rails.logger
else
require 'logger'
Logger.new($stderr)
end
logger.warn message
logger.debug callstack.join("\n ") if debug
+ },
+ :notify => Proc.new { |message, callstack|
+ ActiveSupport::Notifications.instrument("deprecation.rails",
+ :message => message, :callstack => callstack)
}
}
end
end