aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/deprecation/behaviors.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2009-04-17 21:29:30 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2009-04-17 21:29:30 -0700
commit727e9dc18a7059f024b922b65951198ff0184fdd (patch)
tree740e578645d8fdc45dbec0a4412a8455cc05bfed /activesupport/lib/active_support/deprecation/behaviors.rb
parent3202671dc9360c4a89d80355824b239b52b2f611 (diff)
downloadrails-727e9dc18a7059f024b922b65951198ff0184fdd.tar.gz
rails-727e9dc18a7059f024b922b65951198ff0184fdd.tar.bz2
rails-727e9dc18a7059f024b922b65951198ff0184fdd.zip
Dice up ActiveSupport::Deprecation
Diffstat (limited to 'activesupport/lib/active_support/deprecation/behaviors.rb')
-rw-r--r--activesupport/lib/active_support/deprecation/behaviors.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/deprecation/behaviors.rb b/activesupport/lib/active_support/deprecation/behaviors.rb
new file mode 100644
index 0000000000..c531a1aa58
--- /dev/null
+++ b/activesupport/lib/active_support/deprecation/behaviors.rb
@@ -0,0 +1,32 @@
+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
+ end
+
+ def default_behavior
+ Deprecation::DEFAULT_BEHAVIORS[defined?(Rails) ? Rails.env.to_s : 'test']
+ end
+ end
+
+ # Default warning behaviors per Rails.env. Ignored in production.
+ DEFAULT_BEHAVIORS = {
+ 'test' => Proc.new { |message, callstack|
+ $stderr.puts(message)
+ $stderr.puts callstack.join("\n ") if debug
+ },
+ 'development' => Proc.new { |message, callstack|
+ logger = defined?(Rails) ? Rails.logger : Logger.new($stderr)
+ logger.warn message
+ logger.debug callstack.join("\n ") if debug
+ }
+ }
+ end
+end