module Sequel::Deprecation
This module makes it easy to print deprecation warnings with optional backtraces to a given stream. There are a two accessors you can use to change how/where the deprecation methods are printed and whether/how backtraces should be included:
Sequel::Deprecation.output = $stderr # print deprecation messages to standard error (default) Sequel::Deprecation.output = File.open('deprecated_calls.txt', 'wb') # use a file instead Sequel::Deprecation.output = false # do not output deprecation messages Sequel::Deprecation.prefix = "SEQUEL DEPRECATION WARNING: " # prefix deprecation messages with a given string (default) Sequel::Deprecation.prefix = false # do not prefix deprecation messages Sequel::Deprecation.backtrace_filter = false # don't include backtraces Sequel::Deprecation.backtrace_filter = true # include full backtraces Sequel::Deprecation.backtrace_filter = 10 # include 10 backtrace lines (default) Sequel::Deprecation.backtrace_filter = 1 # include 1 backtrace line Sequel::Deprecation.backtrace_filter = lambda{|line, line_no| line_no < 3 || line =~ /my_app/} # select backtrace lines to output
Attributes
How to filter backtraces. false
does not include backtraces,
true
includes full backtraces, an Integer includes that number
of backtrace lines, and a proc is called with the backtrace line and line
number to select the backtrace lines to include. The default is 10
backtrace lines.
Where deprecation messages should be output, must respond to puts. $stderr by default.
Where deprecation messages should be prefixed with (“SEQUEL DEPRECATION WARNING: ” by default).
Public Class Methods
Print the message and possibly backtrace to the output.
# File lib/sequel/deprecated.rb, line 38 def self.deprecate(method, instead=nil) return unless output message = instead ? "#{method} is deprecated and will be removed in a future version of Sequel. #{instead}." : method message = "#{prefix}#{message}" if prefix output.puts(message) case b = backtrace_filter when Integer caller.each do |c| b -= 1 output.puts(c) break if b <= 0 end when true caller.each{|c| output.puts(c)} when Proc caller.each_with_index{|line, line_no| output.puts(line) if b.call(line, line_no)} end nil end