mirror of
https://github.com/DatabaseCleaner/database_cleaner
synced 2023-03-27 23:22:03 -04:00
only print one deprecation warning per method.
This commit is contained in:
parent
8e9b9e6cb0
commit
d4ba260424
3 changed files with 37 additions and 14 deletions
|
@ -1,3 +1,4 @@
|
|||
require 'database_cleaner/deprecation'
|
||||
require 'database_cleaner/null_strategy'
|
||||
require 'database_cleaner/safeguard'
|
||||
require 'database_cleaner/orm_autodetector'
|
||||
|
@ -73,22 +74,22 @@ module DatabaseCleaner
|
|||
# TODO remove the following methods in 2.0
|
||||
|
||||
def auto_detected?
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].auto_detected?` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].auto_detected?` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
@orm_autodetector.autodetected?
|
||||
end
|
||||
|
||||
def autodetect_orm
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].autodetect_orm` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].autodetect_orm` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
@orm_autodetector.orm
|
||||
end
|
||||
|
||||
def clean!
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean instead."
|
||||
clean
|
||||
end
|
||||
|
||||
def clean_with!
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean_with instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean_with instead."
|
||||
clean_with
|
||||
end
|
||||
|
||||
|
@ -96,14 +97,14 @@ module DatabaseCleaner
|
|||
|
||||
def strategy_db=(desired_db)
|
||||
if called_externally?(caller)
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
|
||||
end
|
||||
set_strategy_db(strategy, desired_db)
|
||||
end
|
||||
|
||||
def set_strategy_db(strategy, desired_db)
|
||||
if called_externally?(caller)
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].set_strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].set_strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
|
||||
end
|
||||
if strategy.respond_to? :db=
|
||||
strategy.db = desired_db
|
||||
|
@ -114,7 +115,7 @@ module DatabaseCleaner
|
|||
|
||||
def create_strategy(*args)
|
||||
if called_externally?(caller)
|
||||
$stderr.puts "Calling `DatabaseCleaner[...].create_strategy` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].strategy=` instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].create_strategy` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].strategy=` instead."
|
||||
end
|
||||
strategy, *strategy_args = args
|
||||
orm_strategy(strategy).new(*strategy_args)
|
||||
|
@ -130,7 +131,7 @@ module DatabaseCleaner
|
|||
def orm_strategy(strategy)
|
||||
orm_module.const_get(strategy.to_s.capitalize)
|
||||
rescue NameError
|
||||
$stderr.puts <<-TEXT
|
||||
DatabaseCleaner.deprecate <<-TEXT
|
||||
Requiring the `database_cleaner` gem directly is deprecated, and will raise an error in database_cleaner 2.0. Instead, please require the specific gem (or gems) for your ORM.
|
||||
For example, replace `gem "database_cleaner"` with `gem "database_cleaner-#{orm}"` in your Gemfile.
|
||||
TEXT
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
require 'database_cleaner/base'
|
||||
require 'database_cleaner/deprecation'
|
||||
require 'forwardable'
|
||||
|
||||
module DatabaseCleaner
|
||||
|
@ -82,22 +83,22 @@ module DatabaseCleaner
|
|||
# TODO remove the following methods in 2.0
|
||||
|
||||
def clean!
|
||||
$stderr.puts "Calling `DatabaseCleaner.clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.clean`, instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner.clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.clean`, instead."
|
||||
clean
|
||||
end
|
||||
|
||||
def clean_with!(*args)
|
||||
$stderr.puts "Calling `DatabaseCleaner.clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.clean_with`, instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner.clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.clean_with`, instead."
|
||||
clean_with(*args)
|
||||
end
|
||||
|
||||
def init_cleaners
|
||||
$stderr.puts "Calling `DatabaseCleaner.init_cleaners` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner.init_cleaners` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
end
|
||||
|
||||
def connections
|
||||
if called_externally?(caller)
|
||||
$stderr.puts "Calling `DatabaseCleaner.connections` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.cleaners`, instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner.connections` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.cleaners`, instead."
|
||||
end
|
||||
add_cleaner(:autodetect) if @cleaners.none?
|
||||
@cleaners.values
|
||||
|
@ -107,14 +108,14 @@ module DatabaseCleaner
|
|||
|
||||
def add_cleaner(orm, opts = {})
|
||||
if called_externally?(caller)
|
||||
$stderr.puts "Calling `DatabaseCleaner.add_cleaner` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.[]`, instead."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner.add_cleaner` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.[]`, instead."
|
||||
end
|
||||
@cleaners.add_cleaner(orm, opts = {})
|
||||
end
|
||||
|
||||
def remove_duplicates
|
||||
if called_externally?(caller)
|
||||
$stderr.puts "Calling `DatabaseCleaner.remove_duplicates` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
DatabaseCleaner.deprecate "Calling `DatabaseCleaner.remove_duplicates` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
|
||||
end
|
||||
@cleaners.remove_duplicates
|
||||
end
|
||||
|
|
21
lib/database_cleaner/deprecation.rb
Normal file
21
lib/database_cleaner/deprecation.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
module DatabaseCleaner
|
||||
def deprecate message
|
||||
method = caller.first[/\d+:in `(.*)'$/, 1].to_sym
|
||||
@@deprecator ||= Deprecator.new
|
||||
@@deprecator.deprecate method, message
|
||||
end
|
||||
module_function :deprecate
|
||||
|
||||
class Deprecator
|
||||
def initialize
|
||||
@methods_already_warned = {}
|
||||
end
|
||||
|
||||
def deprecate method, message
|
||||
return if @methods_already_warned.key?(method)
|
||||
$stderr.puts message
|
||||
@methods_already_warned[method] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue