database_cleaner 1.99.0 → 2.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/lib/database_cleaner.rb +1 -47
  3. metadata +14 -484
  4. data/CONTRIBUTE.markdown +0 -27
  5. data/Gemfile.lock +0 -324
  6. data/History.rdoc +0 -514
  7. data/LICENSE +0 -20
  8. data/README.markdown +0 -389
  9. data/Rakefile +0 -44
  10. data/TODO +0 -3
  11. data/adapters/database_cleaner-active_record/lib/database_cleaner-active_record.rb +0 -1
  12. data/adapters/database_cleaner-active_record/lib/database_cleaner/active_record.rb +0 -6
  13. data/adapters/database_cleaner-active_record/lib/database_cleaner/active_record/base.rb +0 -101
  14. data/adapters/database_cleaner-active_record/lib/database_cleaner/active_record/deletion.rb +0 -108
  15. data/adapters/database_cleaner-active_record/lib/database_cleaner/active_record/transaction.rb +0 -59
  16. data/adapters/database_cleaner-active_record/lib/database_cleaner/active_record/truncation.rb +0 -288
  17. data/adapters/database_cleaner-active_record/lib/database_cleaner/active_record/version.rb +0 -5
  18. data/adapters/database_cleaner-couch_potato/lib/database_cleaner-couch_potato.rb +0 -1
  19. data/adapters/database_cleaner-couch_potato/lib/database_cleaner/couch_potato.rb +0 -13
  20. data/adapters/database_cleaner-couch_potato/lib/database_cleaner/couch_potato/base.rb +0 -7
  21. data/adapters/database_cleaner-couch_potato/lib/database_cleaner/couch_potato/truncation.rb +0 -28
  22. data/adapters/database_cleaner-couch_potato/lib/database_cleaner/couch_potato/version.rb +0 -5
  23. data/adapters/database_cleaner-data_mapper/lib/database_cleaner-data_mapper.rb +0 -1
  24. data/adapters/database_cleaner-data_mapper/lib/database_cleaner/data_mapper.rb +0 -6
  25. data/adapters/database_cleaner-data_mapper/lib/database_cleaner/data_mapper/base.rb +0 -25
  26. data/adapters/database_cleaner-data_mapper/lib/database_cleaner/data_mapper/transaction.rb +0 -28
  27. data/adapters/database_cleaner-data_mapper/lib/database_cleaner/data_mapper/truncation.rb +0 -173
  28. data/adapters/database_cleaner-data_mapper/lib/database_cleaner/data_mapper/version.rb +0 -5
  29. data/adapters/database_cleaner-mongo/lib/database_cleaner-mongo.rb +0 -1
  30. data/adapters/database_cleaner-mongo/lib/database_cleaner/mongo.rb +0 -11
  31. data/adapters/database_cleaner-mongo/lib/database_cleaner/mongo/base.rb +0 -16
  32. data/adapters/database_cleaner-mongo/lib/database_cleaner/mongo/deletion.rb +0 -8
  33. data/adapters/database_cleaner-mongo/lib/database_cleaner/mongo/truncation.rb +0 -74
  34. data/adapters/database_cleaner-mongo/lib/database_cleaner/mongo/truncation_mixin.rb +0 -26
  35. data/adapters/database_cleaner-mongo/lib/database_cleaner/mongo/version.rb +0 -5
  36. data/adapters/database_cleaner-mongo_mapper/lib/database_cleaner-mongo_mapper.rb +0 -1
  37. data/adapters/database_cleaner-mongo_mapper/lib/database_cleaner/mongo_mapper.rb +0 -5
  38. data/adapters/database_cleaner-mongo_mapper/lib/database_cleaner/mongo_mapper/base.rb +0 -24
  39. data/adapters/database_cleaner-mongo_mapper/lib/database_cleaner/mongo_mapper/truncation.rb +0 -35
  40. data/adapters/database_cleaner-mongo_mapper/lib/database_cleaner/mongo_mapper/version.rb +0 -5
  41. data/adapters/database_cleaner-mongoid/lib/database_cleaner-mongoid.rb +0 -1
  42. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid.rb +0 -11
  43. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/base.rb +0 -20
  44. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/deletion.rb +0 -10
  45. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/mongo1_truncation_mixin.rb +0 -26
  46. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/mongo2_truncation_mixin.rb +0 -38
  47. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/mongoid_truncation_mixin.rb +0 -65
  48. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/truncation.rb +0 -49
  49. data/adapters/database_cleaner-mongoid/lib/database_cleaner/mongoid/version.rb +0 -5
  50. data/adapters/database_cleaner-moped/lib/database_cleaner-moped.rb +0 -1
  51. data/adapters/database_cleaner-moped/lib/database_cleaner/moped.rb +0 -12
  52. data/adapters/database_cleaner-moped/lib/database_cleaner/moped/base.rb +0 -39
  53. data/adapters/database_cleaner-moped/lib/database_cleaner/moped/truncation.rb +0 -9
  54. data/adapters/database_cleaner-moped/lib/database_cleaner/moped/truncation_base.rb +0 -44
  55. data/adapters/database_cleaner-moped/lib/database_cleaner/moped/version.rb +0 -5
  56. data/adapters/database_cleaner-neo4j/lib/database_cleaner-neo4j.rb +0 -1
  57. data/adapters/database_cleaner-neo4j/lib/database_cleaner/neo4j.rb +0 -7
  58. data/adapters/database_cleaner-neo4j/lib/database_cleaner/neo4j/base.rb +0 -66
  59. data/adapters/database_cleaner-neo4j/lib/database_cleaner/neo4j/deletion.rb +0 -16
  60. data/adapters/database_cleaner-neo4j/lib/database_cleaner/neo4j/transaction.rb +0 -35
  61. data/adapters/database_cleaner-neo4j/lib/database_cleaner/neo4j/truncation.rb +0 -9
  62. data/adapters/database_cleaner-neo4j/lib/database_cleaner/neo4j/version.rb +0 -5
  63. data/adapters/database_cleaner-ohm/lib/database_cleaner-ohm.rb +0 -1
  64. data/adapters/database_cleaner-ohm/lib/database_cleaner/ohm.rb +0 -12
  65. data/adapters/database_cleaner-ohm/lib/database_cleaner/ohm/truncation.rb +0 -24
  66. data/adapters/database_cleaner-ohm/lib/database_cleaner/ohm/version.rb +0 -5
  67. data/adapters/database_cleaner-redis/lib/database_cleaner-redis.rb +0 -1
  68. data/adapters/database_cleaner-redis/lib/database_cleaner/redis.rb +0 -5
  69. data/adapters/database_cleaner-redis/lib/database_cleaner/redis/base.rb +0 -45
  70. data/adapters/database_cleaner-redis/lib/database_cleaner/redis/deletion.rb +0 -9
  71. data/adapters/database_cleaner-redis/lib/database_cleaner/redis/truncation.rb +0 -26
  72. data/adapters/database_cleaner-redis/lib/database_cleaner/redis/version.rb +0 -5
  73. data/adapters/database_cleaner-sequel/lib/database_cleaner-sequel.rb +0 -1
  74. data/adapters/database_cleaner-sequel/lib/database_cleaner/sequel.rb +0 -6
  75. data/adapters/database_cleaner-sequel/lib/database_cleaner/sequel/base.rb +0 -26
  76. data/adapters/database_cleaner-sequel/lib/database_cleaner/sequel/deletion.rb +0 -47
  77. data/adapters/database_cleaner-sequel/lib/database_cleaner/sequel/transaction.rb +0 -40
  78. data/adapters/database_cleaner-sequel/lib/database_cleaner/sequel/truncation.rb +0 -79
  79. data/adapters/database_cleaner-sequel/lib/database_cleaner/sequel/version.rb +0 -5
  80. data/cucumber.yml +0 -1
  81. data/lib/database_cleaner/base.rb +0 -169
  82. data/lib/database_cleaner/configuration.rb +0 -136
  83. data/lib/database_cleaner/cucumber.rb +0 -3
  84. data/lib/database_cleaner/deprecation.rb +0 -26
  85. data/lib/database_cleaner/generic/base.rb +0 -29
  86. data/lib/database_cleaner/generic/transaction.rb +0 -11
  87. data/lib/database_cleaner/generic/truncation.rb +0 -40
  88. data/lib/database_cleaner/null_strategy.rb +0 -20
  89. data/lib/database_cleaner/orm_autodetector.rb +0 -41
  90. data/lib/database_cleaner/safeguard.rb +0 -107
  91. data/lib/database_cleaner/spec.rb +0 -2
  92. data/lib/database_cleaner/spec/database_helper.rb +0 -82
  93. data/lib/database_cleaner/spec/shared_examples.rb +0 -15
  94. data/lib/database_cleaner/version.rb +0 -3
@@ -1,5 +0,0 @@
1
- module DatabaseCleaner
2
- module Sequel
3
- VERSION = "1.99.0"
4
- end
5
- end
data/cucumber.yml DELETED
@@ -1 +0,0 @@
1
- default: features
@@ -1,169 +0,0 @@
1
- require 'database_cleaner/deprecation'
2
- require 'database_cleaner/null_strategy'
3
- require 'database_cleaner/safeguard'
4
- require 'database_cleaner/orm_autodetector'
5
- require 'forwardable'
6
-
7
- module DatabaseCleaner
8
- class Base
9
- include Comparable
10
-
11
- def <=>(other)
12
- [orm, db] <=> [other.orm, other.db]
13
- end
14
-
15
- def initialize(desired_orm = nil, opts = {})
16
- @orm_autodetector = ORMAutodetector.new
17
- self.orm = desired_orm
18
- if opts.has_key?(:model)
19
- DatabaseCleaner.deprecate "Using the `:model` key in `DatabaseCleaner[:orm, model: ...]` is deprecated, and will be removed in database_cleaner 2.0. Please use the new `:db` key, instead, which has identical behavior: `DatabaseCleaner[:orm, db: ...]`."
20
- end
21
- if opts.has_key?(:connection)
22
- DatabaseCleaner.deprecate "Using the `:connection` key in `DatabaseCleaner[:orm, connection: ...]` is deprecated, and will be removed in database_cleaner 2.0. Please use the new `:db` key, instead, which has identical behavior: `DatabaseCleaner[:orm, db: ...]`."
23
- end
24
- self.db = opts[:db] || opts[:connection] || opts[:model] if opts.has_key?(:db) || opts.has_key?(:connection) || opts.has_key?(:model)
25
- self.strategy = orm_module && orm_module.default_strategy
26
- Safeguard.new.run
27
- end
28
-
29
- def db=(desired_db)
30
- @db = self.strategy_db = desired_db
31
- end
32
-
33
- def db
34
- @db ||= :default
35
- end
36
-
37
- def strategy=(args)
38
- strategy, *strategy_args = args
39
-
40
- if DatabaseCleaner.called_externally?(__FILE__, caller) \
41
- && [:redis, :mongo, :mongoid].include?(orm) \
42
- && strategy == :truncation
43
- DatabaseCleaner.deprecate "The #{orm} adapter's :truncation strategy will be renamed to :deletion in database_cleaner-#{orm} 2.0. Please specify the :deletion adapter to resolve this deprecation notice."
44
- end
45
-
46
- @strategy = if strategy.is_a?(Symbol)
47
- create_strategy(*args)
48
- elsif strategy_args.empty?
49
- strategy
50
- else
51
- raise ArgumentError, "You must provide a strategy object, or a symbol for a known strategy along with initialization params."
52
- end
53
-
54
- set_strategy_db @strategy, db
55
- end
56
-
57
- def strategy
58
- @strategy ||= NullStrategy.new
59
- end
60
-
61
- attr_reader :orm
62
-
63
- def orm=(desired_orm)
64
- if DatabaseCleaner.called_externally?(__FILE__, caller)
65
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[:orm].orm=` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
66
- end
67
- @orm = (desired_orm || :autodetect).to_sym
68
- @orm = @orm_autodetector.orm if @orm == :autodetect
69
- end
70
-
71
- extend Forwardable
72
- delegate [:start, :clean, :cleaning] => :strategy
73
-
74
- def clean_with(*args)
75
- strategy = create_strategy(*args)
76
- set_strategy_db strategy, db
77
- strategy.clean
78
- strategy
79
- end
80
-
81
- # TODO remove the following methods in 2.0
82
-
83
- def auto_detected?
84
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].auto_detected?` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
85
- @orm_autodetector.autodetected?
86
- end
87
-
88
- def autodetect_orm
89
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].autodetect_orm` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
90
- @orm_autodetector.orm
91
- end
92
-
93
- def clean!
94
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean instead."
95
- clean
96
- end
97
-
98
- def clean_with!
99
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].clean_with instead."
100
- clean_with
101
- end
102
-
103
- # TODO privatize the following methods in 2.0
104
-
105
- def strategy_db=(desired_db)
106
- if DatabaseCleaner.called_externally?(__FILE__, caller)
107
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
108
- end
109
- set_strategy_db(strategy, desired_db)
110
- end
111
-
112
- def set_strategy_db(strategy, desired_db)
113
- if DatabaseCleaner.called_externally?(__FILE__, caller)
114
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].set_strategy_db=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].db=` instead."
115
- end
116
- if strategy.respond_to? :db=
117
- strategy.db = desired_db
118
- elsif desired_db != :default
119
- raise ArgumentError, "You must provide a strategy object that supports non default databases when you specify a database"
120
- end
121
- end
122
-
123
- def create_strategy(*args)
124
- if DatabaseCleaner.called_externally?(__FILE__, caller)
125
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner[...].create_strategy` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner[...].strategy=` instead."
126
- end
127
- strategy, *strategy_args = args
128
- orm_strategy(strategy).new(*strategy_args)
129
- end
130
-
131
- private
132
-
133
- def orm_module
134
- return unless [:active_record, :data_mapper, :mongo, :mongoid, :mongo_mapper, :moped, :couch_potato, :sequel, :ohm, :redis, :neo4j].include?(orm)
135
- load_adapter(orm) if !adapter_loaded?(orm)
136
- orm_module_name = ORMAutodetector::ORMS[orm]
137
- DatabaseCleaner.const_get(orm_module_name, false)
138
- end
139
-
140
- def adapter_loaded? orm
141
- $LOADED_FEATURES.grep(%r{/lib/database_cleaner/#{orm}\.rb$}).any?
142
- end
143
-
144
- def load_adapter orm
145
- $LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/../../adapters/database_cleaner-#{orm}/lib")
146
- require "database_cleaner/#{orm}"
147
- end
148
-
149
- def orm_strategy(strategy)
150
- strategy_module_name = strategy.to_s.capitalize
151
- orm_module.const_get(strategy_module_name, false)
152
- rescue NameError
153
- if orm != :active_record
154
- DatabaseCleaner.deprecate <<-TEXT
155
- The #{orm_module} adapter has been extracted to its own gem: database_cleaner-#{orm}, and will be removed from database_cleaner in 2.0. To silence this message, please replace `gem "database_cleaner"` with `gem "database_cleaner-#{orm}"` in your Gemfile.
156
- TEXT
157
- end
158
- require_orm_strategy(orm, strategy)
159
- retry
160
- end
161
-
162
- def require_orm_strategy(orm, strategy)
163
- $LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/../../adapters/database_cleaner-#{orm}/lib")
164
- require "database_cleaner/#{orm}/#{strategy}"
165
- rescue LoadError
166
- raise UnknownStrategySpecified, "The '#{strategy}' strategy does not exist for the #{orm} ORM! Available strategies: #{orm_module.available_strategies.join(', ')}"
167
- end
168
- end
169
- end
@@ -1,136 +0,0 @@
1
- require 'database_cleaner/base'
2
- require 'database_cleaner/deprecation'
3
- require 'forwardable'
4
-
5
- module DatabaseCleaner
6
-
7
- class NoORMDetected < StandardError; end
8
- class UnknownStrategySpecified < ArgumentError; end
9
-
10
- class Cleaners < Hash
11
- # FIXME this method conflates creation with lookup... both a command and a query. yuck.
12
- def [](orm, opts = {})
13
- raise NoORMDetected unless orm
14
- fetch([orm, opts]) { add_cleaner(orm, opts) }
15
- end
16
-
17
- def strategy=(strategy)
18
- add_cleaner(:autodetect) if none?
19
- values.each { |cleaner| cleaner.strategy = strategy }
20
- remove_duplicates
21
- end
22
-
23
- def orm=(orm)
24
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.orm=` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
25
- add_cleaner(:autodetect) if none?
26
- values.each { |cleaner| cleaner.orm = orm }
27
- remove_duplicates
28
- end
29
-
30
- # TODO privatize the following methods in 2.0
31
-
32
- def add_cleaner(orm, opts = {})
33
- self[[orm, opts]] = ::DatabaseCleaner::Base.new(orm, opts)
34
- end
35
-
36
- def remove_duplicates
37
- replace(reduce(Cleaners.new) do |cleaners, (key, value)|
38
- cleaners[key] = value unless cleaners.values.include?(value)
39
- cleaners
40
- end)
41
- end
42
- end
43
-
44
- class Configuration
45
- def initialize
46
- @cleaners ||= Cleaners.new
47
- end
48
-
49
- extend Forwardable
50
- delegate [
51
- :[],
52
- :strategy=,
53
- :orm=,
54
- ] => :cleaners
55
-
56
- attr_accessor :cleaners
57
-
58
- def app_root
59
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.app_root` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner::ActiveRecord.config_file_location`, instead."
60
- @app_root ||= Dir.pwd
61
- end
62
-
63
- def app_root= value
64
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.app_root=` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner::ActiveRecord.config_file_location=`, instead."
65
- @app_root = value
66
- end
67
-
68
- def logger
69
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.logger` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
70
- @logger ||= Logger.new(STDOUT).tap { |l| l.level = Logger::ERROR }
71
- end
72
-
73
- def logger= value
74
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.logger=` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
75
- @logger = value
76
- end
77
-
78
- def start
79
- connections.each { |connection| connection.start }
80
- end
81
-
82
- def clean
83
- connections.each { |connection| connection.clean }
84
- end
85
-
86
- def cleaning(&inner_block)
87
- connections.inject(inner_block) do |curr_block, connection|
88
- proc { connection.cleaning(&curr_block) }
89
- end.call
90
- end
91
-
92
- def clean_with(*args)
93
- connections.each { |connection| connection.clean_with(*args) }
94
- end
95
-
96
- # TODO remove the following methods in 2.0
97
-
98
- def clean!
99
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.clean!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.clean`, instead."
100
- clean
101
- end
102
-
103
- def clean_with!(*args)
104
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.clean_with!` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.clean_with`, instead."
105
- clean_with(*args)
106
- end
107
-
108
- def init_cleaners
109
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.init_cleaners` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
110
- end
111
-
112
- def connections
113
- if DatabaseCleaner.called_externally?(__FILE__, caller)
114
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.connections` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.cleaners.values`, instead."
115
- end
116
- add_cleaner(:autodetect) if @cleaners.none?
117
- @cleaners.values
118
- end
119
-
120
- # TODO privatize the following methods in 2.0
121
-
122
- def add_cleaner(orm, opts = {})
123
- if DatabaseCleaner.called_externally?(__FILE__, caller)
124
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.add_cleaner` is deprecated, and will be removed in database_cleaner 2.0. Use `DatabaseCleaner.[]`, instead."
125
- end
126
- @cleaners.add_cleaner(orm, opts = {})
127
- end
128
-
129
- def remove_duplicates
130
- if DatabaseCleaner.called_externally?(__FILE__, caller)
131
- DatabaseCleaner.deprecate "Calling `DatabaseCleaner.remove_duplicates` is deprecated, and will be removed in database_cleaner 2.0 with no replacement."
132
- end
133
- @cleaners.remove_duplicates
134
- end
135
- end
136
- end
@@ -1,3 +0,0 @@
1
- Around do |scenario, block|
2
- DatabaseCleaner.cleaning(&block)
3
- end
@@ -1,26 +0,0 @@
1
- module DatabaseCleaner
2
- def deprecate message
3
- method = caller.first[/\d+:in `(.*)'$/, 1].to_sym
4
- @@deprecator ||= Deprecator.new
5
- @@deprecator.deprecate method, message
6
- end
7
- module_function :deprecate
8
-
9
- def called_externally?(file, caller)
10
- file != caller.first[/^(.+\.rb):\d+/, 1]
11
- end
12
- module_function :called_externally?
13
-
14
- class Deprecator
15
- def initialize
16
- @methods_already_warned = {}
17
- end
18
-
19
- def deprecate method, message
20
- return if @methods_already_warned.key?(method)
21
- $stderr.puts message
22
- @methods_already_warned[method] = true
23
- end
24
- end
25
- end
26
-
@@ -1,29 +0,0 @@
1
- module ::DatabaseCleaner
2
- module Generic
3
- module Base
4
-
5
- def self.included(base)
6
- base.extend(ClassMethods)
7
- end
8
-
9
- def db
10
- :default
11
- end
12
-
13
- def cleaning(&block)
14
- begin
15
- start
16
- yield
17
- ensure
18
- clean
19
- end
20
- end
21
-
22
- module ClassMethods
23
- def available_strategies
24
- %W[]
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,11 +0,0 @@
1
- module DatabaseCleaner
2
- module Generic
3
- module Transaction
4
- def initialize(opts = {})
5
- if !opts.empty?
6
- raise ArgumentError, "Options are not available for transaction strategies."
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,40 +0,0 @@
1
- module DatabaseCleaner
2
- module Generic
3
- module Truncation
4
- def initialize(opts={})
5
- if !opts.empty? && !(opts.keys - [:only, :except, :pre_count, :reset_ids, :cache_tables]).empty?
6
- raise ArgumentError, "The only valid options are :only, :except, :pre_count, :reset_ids or :cache_tables. You specified #{opts.keys.join(',')}."
7
- end
8
- if opts.has_key?(:only) && opts.has_key?(:except)
9
- raise ArgumentError, "You may only specify either :only or :except. Doing both doesn't really make sense does it?"
10
- end
11
-
12
- @only = opts[:only]
13
- @tables_to_exclude = Array( (opts[:except] || []).dup ).flatten
14
- @tables_to_exclude += migration_storage_names
15
- @pre_count = opts[:pre_count]
16
- @reset_ids = opts[:reset_ids]
17
- @cache_tables = opts.has_key?(:cache_tables) ? !!opts[:cache_tables] : true
18
- end
19
-
20
- def start
21
- #included for compatability reasons, do nothing if you don't need to
22
- end
23
-
24
- def clean
25
- raise NotImplementedError
26
- end
27
-
28
- private
29
- def tables_to_truncate
30
- raise NotImplementedError
31
- end
32
-
33
- # overwrite in subclasses
34
- # default implementation given because migration storage need not be present
35
- def migration_storage_names
36
- %w[]
37
- end
38
- end
39
- end
40
- end
@@ -1,20 +0,0 @@
1
- module DatabaseCleaner
2
- class NullStrategy
3
- def start
4
- # no-op
5
- end
6
-
7
- def db=(connection)
8
- # no-op
9
- end
10
-
11
- def clean
12
- # no-op
13
- end
14
-
15
- def cleaning(&block)
16
- # no-op
17
- yield
18
- end
19
- end
20
- end