database_cleaner 1.99.0 → 2.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,41 +0,0 @@
1
- module DatabaseCleaner
2
- class ORMAutodetector
3
- ORMS = {
4
- active_record: "ActiveRecord",
5
- data_mapper: "DataMapper",
6
- mongo_mapper: "MongoMapper",
7
- mongoid: "Mongoid",
8
- mongo: "Mongo",
9
- couch_potato: "CouchPotato",
10
- sequel: "Sequel",
11
- moped: "Moped",
12
- ohm: "Ohm",
13
- redis: "Redis",
14
- neo4j: "Neo4j",
15
- }
16
-
17
- def orm
18
- @autodetected = true
19
- autodetected_orm or raise no_orm_detected_error
20
- ORMS.key(autodetected_orm.to_s)
21
- end
22
-
23
- def autodetected?
24
- !!@autodetected
25
- end
26
-
27
- private
28
-
29
- def autodetected_orm
30
- ORMS.values.find do |orm|
31
- Kernel.const_get(orm) rescue next
32
- end
33
- end
34
-
35
- def no_orm_detected_error
36
- orm_list = ORMS.values.join(", ").sub(ORMS.values.last, "or #{ORMS.values.last}")
37
- NoORMDetected.new("No known ORM was detected! Is #{orm_list} loaded?")
38
- end
39
- end
40
- private_constant :ORMAutodetector
41
- end
@@ -1,107 +0,0 @@
1
- module DatabaseCleaner
2
- class Safeguard
3
- class Error < Exception
4
- class RemoteDatabaseUrl < Error
5
- def initialize
6
- super("ENV['DATABASE_URL'] is set to a remote URL. Please refer to https://github.com/DatabaseCleaner/database_cleaner#safeguards")
7
- end
8
- end
9
-
10
- class ProductionEnv < Error
11
- def initialize(env)
12
- super("ENV['#{env}'] is set to production. Please refer to https://github.com/DatabaseCleaner/database_cleaner#safeguards")
13
- end
14
- end
15
-
16
- class NotWhitelistedUrl < Error
17
- def initialize
18
- super("ENV['DATABASE_URL'] is set to a URL that is not on the whitelist. Please refer to https://github.com/DatabaseCleaner/database_cleaner#safeguards")
19
- end
20
- end
21
- end
22
-
23
- class WhitelistedUrl
24
- def run
25
- return if skip?
26
- raise Error::NotWhitelistedUrl if database_url_not_whitelisted?
27
- end
28
-
29
- private
30
-
31
- def database_url_not_whitelisted?
32
- !DatabaseCleaner.url_whitelist.include?(ENV['DATABASE_URL'])
33
- end
34
-
35
- def skip?
36
- !DatabaseCleaner.url_whitelist
37
- end
38
- end
39
-
40
-
41
- class RemoteDatabaseUrl
42
- LOCAL = %w(localhost 127.0.0.1)
43
-
44
- def run
45
- raise Error::RemoteDatabaseUrl if !skip? && given?
46
- end
47
-
48
- private
49
-
50
- def given?
51
- remote?(ENV['DATABASE_URL'])
52
- end
53
-
54
- def remote?(url)
55
- return false unless url
56
-
57
- parsed = URI.parse(url)
58
- return false if parsed.scheme == 'sqlite3:'
59
-
60
- host = parsed.host
61
- return false unless host
62
- return false if LOCAL.include?(host)
63
- return false if host.end_with? '.local'
64
- true
65
- end
66
-
67
- def skip?
68
- ENV['DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL'] ||
69
- DatabaseCleaner.allow_remote_database_url ||
70
- DatabaseCleaner.url_whitelist
71
- end
72
- end
73
-
74
- class Production
75
- KEYS = %w(ENV RACK_ENV RAILS_ENV)
76
-
77
- def run
78
- raise Error::ProductionEnv.new(key) if !skip? && given?
79
- end
80
-
81
- private
82
-
83
- def given?
84
- !!key
85
- end
86
-
87
- def key
88
- @key ||= KEYS.detect { |key| ENV[key] == 'production' }
89
- end
90
-
91
- def skip?
92
- ENV['DATABASE_CLEANER_ALLOW_PRODUCTION'] ||
93
- DatabaseCleaner.allow_production
94
- end
95
- end
96
-
97
- CHECKS = [
98
- RemoteDatabaseUrl,
99
- Production,
100
- WhitelistedUrl
101
- ]
102
-
103
- def run
104
- CHECKS.each { |const| const.new.run }
105
- end
106
- end
107
- end
@@ -1,2 +0,0 @@
1
- require "database_cleaner/spec/database_helper"
2
- require "database_cleaner/spec/shared_examples"
@@ -1,82 +0,0 @@
1
- require 'yaml'
2
-
3
- module DatabaseCleaner
4
- module Spec
5
- class DatabaseHelper < Struct.new(:db)
6
- def self.with_all_dbs &block
7
- %w[mysql mysql2 sqlite3 postgres].map(&:to_sym).each do |db|
8
- yield new(db)
9
- end
10
- end
11
-
12
- def setup
13
- create_db
14
- establish_connection
15
- load_schema
16
- end
17
-
18
- attr_reader :connection
19
-
20
- def teardown
21
- drop_db
22
- end
23
-
24
- private
25
-
26
- def establish_connection(config = default_config)
27
- raise NotImplementedError
28
- end
29
-
30
- def create_db
31
- if db == :sqlite3
32
- # NO-OP
33
- elsif db == :postgres
34
- establish_connection default_config.merge('database' => 'postgres')
35
- connection.execute "CREATE DATABASE #{default_config['database']}" rescue nil
36
- else
37
- establish_connection default_config.merge("database" => nil)
38
- connection.execute "CREATE DATABASE IF NOT EXISTS #{default_config['database']}"
39
- end
40
- end
41
-
42
- def load_schema
43
- connection.execute <<-SQL
44
- CREATE TABLE IF NOT EXISTS users (
45
- id SERIAL PRIMARY KEY,
46
- name INTEGER
47
- );
48
- SQL
49
-
50
- connection.execute <<-SQL
51
- CREATE TABLE IF NOT EXISTS agents (
52
- name INTEGER
53
- );
54
- SQL
55
- end
56
-
57
- def drop_db
58
- if db == :sqlite3
59
- begin
60
- File.unlink(db_config['sqlite3']['database'])
61
- rescue Errno::ENOENT
62
- end
63
- elsif db == :postgres
64
- # FIXME
65
- connection.execute "DROP TABLE IF EXISTS users"
66
- connection.execute "DROP TABLE IF EXISTS agents"
67
- else
68
- connection.execute "DROP DATABASE IF EXISTS #{default_config['database']}"
69
- end
70
- end
71
-
72
- def db_config
73
- config_path = 'spec/support/config.yml'
74
- @db_config ||= YAML.load(IO.read(config_path))
75
- end
76
-
77
- def default_config
78
- db_config[db.to_s]
79
- end
80
- end
81
- end
82
- end
@@ -1,15 +0,0 @@
1
- RSpec.shared_examples_for "a generic strategy" do
2
- it { is_expected.to respond_to(:db) }
3
- end
4
-
5
- RSpec.shared_examples_for "a generic truncation strategy" do
6
- it { is_expected.to respond_to(:start) }
7
- it { is_expected.to respond_to(:clean) }
8
- it { is_expected.to respond_to(:cleaning) }
9
- end
10
-
11
- RSpec.shared_examples_for "a generic transaction strategy" do
12
- it { is_expected.to respond_to(:start) }
13
- it { is_expected.to respond_to(:clean) }
14
- it { is_expected.to respond_to(:cleaning) }
15
- end
@@ -1,3 +0,0 @@
1
- module DatabaseCleaner
2
- VERSION = "1.99.0"
3
- end