Skip to content
This repository was archived by the owner on May 26, 2020. It is now read-only.

Commit 8e9b9e6

Browse files
deprecate direct access to methods on DC::Base that should have been private.
1 parent 0c8111c commit 8e9b9e6

File tree

1 file changed

+58
-33
lines changed

1 file changed

+58
-33
lines changed

lib/database_cleaner/base.rb

Lines changed: 58 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,36 +23,10 @@ def db=(desired_db)
2323
@db = self.strategy_db = desired_db
2424
end
2525

26-
def strategy_db=(desired_db)
27-
set_strategy_db(strategy, desired_db)
28-
end
29-
3026
def db
3127
@db ||= :default
3228
end
3329

34-
def create_strategy(*args)
35-
strategy, *strategy_args = args
36-
orm_strategy(strategy).new(*strategy_args)
37-
end
38-
39-
def clean_with(*args)
40-
strategy = create_strategy(*args)
41-
set_strategy_db strategy, db
42-
strategy.clean
43-
strategy
44-
end
45-
46-
alias clean_with! clean_with
47-
48-
def set_strategy_db(strategy, desired_db)
49-
if strategy.respond_to? :db=
50-
strategy.db = desired_db
51-
elsif desired_db != :default
52-
raise ArgumentError, "You must provide a strategy object that supports non default databases when you specify a database"
53-
end
54-
end
55-
5630
def strategy=(args)
5731
strategy, *strategy_args = args
5832
@strategy = if strategy.is_a?(Symbol)
@@ -77,26 +51,73 @@ def orm=(desired_orm)
7751
@orm = @orm_autodetector.orm if @orm == :autodetect
7852
end
7953

54+
def start
55+
strategy.start
56+
end
57+
58+
def clean
59+
strategy.clean
60+
end
61+
62+
def cleaning(&block)
63+
strategy.cleaning(&block)
64+
end
65+
66+
def clean_with(*args)
67+
strategy = create_strategy(*args)
68+
set_strategy_db strategy, db
69+
strategy.clean
70+
strategy
71+
end
72+
73+
# TODO remove the following methods in 2.0
74+
8075
def auto_detected?
76+
$stderr.puts "Calling `DatabaseCleaner[...].auto_detected?` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
8177
@orm_autodetector.autodetected?
8278
end
8379

8480
def autodetect_orm
81+
$stderr.puts "Calling `DatabaseCleaner[...].autodetect_orm` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
8582
@orm_autodetector.orm
8683
end
8784

88-
def start
89-
strategy.start
85+
def clean!
86+
$stderr.puts "Calling `DatabaseCleaner[...].clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean instead."
87+
clean
9088
end
9189

92-
def clean
93-
strategy.clean
90+
def clean_with!
91+
$stderr.puts "Calling `DatabaseCleaner[...].clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean_with instead."
92+
clean_with
9493
end
9594

96-
alias clean! clean
95+
# TODO privatize the following methods in 2.0
9796

98-
def cleaning(&block)
99-
strategy.cleaning(&block)
97+
def strategy_db=(desired_db)
98+
if called_externally?(caller)
99+
$stderr.puts "Calling `DatabaseCleaner[...].strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
100+
end
101+
set_strategy_db(strategy, desired_db)
102+
end
103+
104+
def set_strategy_db(strategy, desired_db)
105+
if called_externally?(caller)
106+
$stderr.puts "Calling `DatabaseCleaner[...].set_strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
107+
end
108+
if strategy.respond_to? :db=
109+
strategy.db = desired_db
110+
elsif desired_db != :default
111+
raise ArgumentError, "You must provide a strategy object that supports non default databases when you specify a database"
112+
end
113+
end
114+
115+
def create_strategy(*args)
116+
if called_externally?(caller)
117+
$stderr.puts "Calling `DatabaseCleaner[...].create_strategy` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].strategy=` instead."
118+
end
119+
strategy, *strategy_args = args
120+
orm_strategy(strategy).new(*strategy_args)
100121
end
101122

102123
private
@@ -132,5 +153,9 @@ def default_orm_strategy
132153
:truncation
133154
end
134155
end
156+
157+
def called_externally?(caller)
158+
__FILE__ != caller.first.split(":").first
159+
end
135160
end
136161
end

0 commit comments

Comments
 (0)