evil-seed 0.1.1 → 0.1.2
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.
- checksums.yaml +5 -5
- data/.travis.yml +32 -5
- data/Appraisals +18 -0
- data/Gemfile +0 -4
- data/README.md +52 -3
- data/evil-seed.gemspec +3 -1
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/activerecord_4_2.gemfile +3 -4
- data/gemfiles/activerecord_5_0.gemfile +3 -4
- data/gemfiles/activerecord_5_1.gemfile +8 -0
- data/gemfiles/activerecord_5_2.gemfile +8 -0
- data/gemfiles/activerecord_master.gemfile +7 -0
- data/lib/evil-seed.rb +3 -0
- data/lib/evil_seed/record_dumper.rb +1 -0
- data/lib/evil_seed/relation_dumper.rb +1 -1
- data/lib/evil_seed/version.rb +1 -1
- metadata +38 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: b241703e95ddb394e93723c78bc574b53263cb5c12b14dec89c04bd1546e86f9
|
|
4
|
+
data.tar.gz: c0b3a2c17a43706094afcb5ddcb7102aaaa8c2fb422c1abc73a481c03458db14
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b5f9171b1c00fb4bd3665670b30f4f26eb427dc8202dcb1fc9a03856ce403b358754b90668e3c96ba8bcc147de39ebf451749be8ff4eed2b56f9b34c26b0a336
|
|
7
|
+
data.tar.gz: 0b258a881c6eda7fa7a8c0b87bb3602822203490bc2415418f793735f55fd8403010bfe18790e8c4befb01a691f3d47e715bb63dfabf8aa86d6234f7a4d98667
|
data/.travis.yml
CHANGED
|
@@ -11,19 +11,46 @@ addons:
|
|
|
11
11
|
|
|
12
12
|
matrix:
|
|
13
13
|
include:
|
|
14
|
-
- rvm: 2.
|
|
14
|
+
- rvm: 2.5.0
|
|
15
|
+
gemfile: gemfiles/activerecord_master.gemfile
|
|
16
|
+
env: "DB=sqlite"
|
|
17
|
+
- rvm: 2.5.0
|
|
18
|
+
gemfile: gemfiles/activerecord_master.gemfile
|
|
19
|
+
env: "DB=postgresql"
|
|
20
|
+
- rvm: 2.5.0
|
|
21
|
+
gemfile: gemfiles/activerecord_master.gemfile
|
|
22
|
+
env: "DB=mysql"
|
|
23
|
+
- rvm: 2.5.0
|
|
24
|
+
gemfile: gemfiles/activerecord_5_2.gemfile
|
|
25
|
+
env: "DB=sqlite"
|
|
26
|
+
- rvm: 2.5.0
|
|
27
|
+
gemfile: gemfiles/activerecord_5_2.gemfile
|
|
28
|
+
env: "DB=postgresql"
|
|
29
|
+
- rvm: 2.5.0
|
|
30
|
+
gemfile: gemfiles/activerecord_5_2.gemfile
|
|
31
|
+
env: "DB=mysql"
|
|
32
|
+
- rvm: 2.5.0
|
|
33
|
+
gemfile: gemfiles/activerecord_5_1.gemfile
|
|
34
|
+
env: "DB=sqlite"
|
|
35
|
+
- rvm: 2.5.0
|
|
36
|
+
gemfile: gemfiles/activerecord_5_1.gemfile
|
|
37
|
+
env: "DB=postgresql"
|
|
38
|
+
- rvm: 2.5.0
|
|
39
|
+
gemfile: gemfiles/activerecord_5_1.gemfile
|
|
40
|
+
env: "DB=mysql"
|
|
41
|
+
- rvm: 2.4.3
|
|
15
42
|
gemfile: gemfiles/activerecord_5_0.gemfile
|
|
16
43
|
env: "DB=sqlite"
|
|
17
|
-
- rvm: 2.4.
|
|
44
|
+
- rvm: 2.4.3
|
|
18
45
|
gemfile: gemfiles/activerecord_5_0.gemfile
|
|
19
46
|
env: "DB=postgresql"
|
|
20
|
-
- rvm: 2.4.
|
|
47
|
+
- rvm: 2.4.3
|
|
21
48
|
gemfile: gemfiles/activerecord_5_0.gemfile
|
|
22
49
|
env: "DB=mysql"
|
|
23
|
-
- rvm: 2.3.
|
|
50
|
+
- rvm: 2.3.6
|
|
24
51
|
gemfile: gemfiles/activerecord_4_2.gemfile
|
|
25
52
|
env: "DB=postgresql"
|
|
26
|
-
- rvm: 2.3.
|
|
53
|
+
- rvm: 2.3.6
|
|
27
54
|
gemfile: gemfiles/activerecord_4_2.gemfile
|
|
28
55
|
env: "DB=sqlite"
|
|
29
56
|
# Please note that gem can't be tested against MySQL on ActiveRecord 4.2 (Dump and restore test doesn't work)!
|
data/Appraisals
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
appraise 'activerecord-4-2' do
|
|
2
2
|
gem 'activerecord', '~> 4.2.0'
|
|
3
|
+
gem 'pg', '~> 0.20'
|
|
4
|
+
gem 'mysql2', '~> 0.3.18'
|
|
3
5
|
end
|
|
4
6
|
|
|
5
7
|
appraise 'activerecord-5-0' do
|
|
6
8
|
gem 'activerecord', '~> 5.0.0'
|
|
9
|
+
gem 'pg', '~> 0.20'
|
|
10
|
+
gem 'mysql2', '~> 0.4.4'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
appraise 'activerecord-5-1' do
|
|
14
|
+
gem 'activerecord', '~> 5.1.0'
|
|
15
|
+
gem 'mysql2', '~> 0.4.4'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
appraise 'activerecord-5-2' do
|
|
19
|
+
gem 'activerecord', '~> 5.2.0.rc2'
|
|
20
|
+
gem 'mysql2', '~> 0.4.4'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
appraise 'activerecord-master' do
|
|
24
|
+
gem 'activerecord', git: 'https://github.com/rails/rails.git'
|
|
7
25
|
end
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
[](https://rubygems.org/gems/evil-seed)
|
|
1
|
+
[](https://rubygems.org/gems/evil-seed)
|
|
2
|
+
[](https://travis-ci.org/evilmartians/evil-seed)
|
|
3
|
+
[](http://cultofmartians.com/tasks/evil-seed.html)
|
|
2
4
|
|
|
3
5
|
# EvilSeed
|
|
4
6
|
|
|
@@ -40,7 +42,7 @@ Or install it yourself as:
|
|
|
40
42
|
### Configuration
|
|
41
43
|
|
|
42
44
|
```ruby
|
|
43
|
-
require '
|
|
45
|
+
require 'evil_seed'
|
|
44
46
|
|
|
45
47
|
EvilSeed.configure do |config|
|
|
46
48
|
# First, you should specify +root models+ and their +constraints+ to limit the number of dumped records:
|
|
@@ -90,7 +92,7 @@ EvilSeed.configure do |config|
|
|
|
90
92
|
Just call the `#dump` method and pass a path where you want your SQL dump file to appear!
|
|
91
93
|
|
|
92
94
|
```ruby
|
|
93
|
-
require '
|
|
95
|
+
require 'evil_seed'
|
|
94
96
|
EvilSeed.dump('path/to/new_dump.sql')
|
|
95
97
|
```
|
|
96
98
|
|
|
@@ -122,6 +124,53 @@ This gem has been tested against:
|
|
|
122
124
|
3. Some internal refactoring is required
|
|
123
125
|
|
|
124
126
|
|
|
127
|
+
## Standalone usage
|
|
128
|
+
|
|
129
|
+
If you want to use it as a standalone application, you can place exerything in a single file like this:
|
|
130
|
+
|
|
131
|
+
```ruby
|
|
132
|
+
#!/usr/bin/env ruby
|
|
133
|
+
|
|
134
|
+
require 'bundler/inline'
|
|
135
|
+
|
|
136
|
+
gemfile do
|
|
137
|
+
source 'https://rubygems.org'
|
|
138
|
+
gem 'activerecord'
|
|
139
|
+
gem 'evil-seed'
|
|
140
|
+
gem 'mysql2'
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Describe your database layout with ActiveRecord models.
|
|
144
|
+
# See http://guides.rubyonrails.org/active_record_basics.html
|
|
145
|
+
|
|
146
|
+
class Category < ActiveRecord::Base
|
|
147
|
+
has_many :translations, class_name: "Category::Translation"
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
class Category::Translation < ActiveRecord::Base
|
|
151
|
+
belongs_to :category, inverse_of: :translations
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Configure evil-seed itself
|
|
155
|
+
EvilSeed.configure do |config|
|
|
156
|
+
config.root("Category", "id < ?", 1000)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Connect to your database.
|
|
160
|
+
# See http://guides.rubyonrails.org/configuring.html#configuring-a-database)
|
|
161
|
+
ActiveRecord::Base.establish_connection(ENV.fetch("DATABASE_URL"))
|
|
162
|
+
|
|
163
|
+
# Create dump in dump.sql file in the same directory as this script
|
|
164
|
+
EvilSeed.dump(File.join(__dir__, "dump.sql").to_s)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
And launch it like so:
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
DATABASE_URL=mysql2://user:pass@host/db ruby path/to/your/script.rb
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
|
|
125
174
|
## Development
|
|
126
175
|
|
|
127
176
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/evil-seed.gemspec
CHANGED
|
@@ -31,7 +31,9 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
|
|
32
32
|
spec.add_development_dependency 'rake', '~> 12.0'
|
|
33
33
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
|
34
|
-
spec.add_development_dependency 'pg', '
|
|
34
|
+
spec.add_development_dependency 'pg', '>= 0.20'
|
|
35
|
+
spec.add_development_dependency 'mysql2'
|
|
36
|
+
spec.add_development_dependency 'sqlite3'
|
|
35
37
|
spec.add_development_dependency 'rubocop'
|
|
36
38
|
spec.add_development_dependency 'bundler'
|
|
37
39
|
spec.add_development_dependency 'pry'
|
data/lib/evil-seed.rb
ADDED
|
@@ -144,7 +144,7 @@ module EvilSeed
|
|
|
144
144
|
next false if reflection.options[:polymorphic] # TODO: Add support for polymorphic belongs_to
|
|
145
145
|
excluded = root.excluded?("#{association_path}.#{reflection.name}") || reflection.name == inverse_reflection
|
|
146
146
|
if excluded
|
|
147
|
-
nullify_columns << reflection.foreign_key
|
|
147
|
+
nullify_columns << reflection.foreign_key if model_class.attribute_names.include?(reflection.foreign_key)
|
|
148
148
|
else
|
|
149
149
|
foreign_keys[reflection.name] = reflection.foreign_key
|
|
150
150
|
table_names[reflection.name] = reflection.table_name
|
data/lib/evil_seed/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: evil-seed
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrey Novikov
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
@@ -57,16 +57,44 @@ dependencies:
|
|
|
57
57
|
name: pg
|
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
|
60
|
-
- - "
|
|
60
|
+
- - ">="
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
62
|
version: '0.20'
|
|
63
63
|
type: :development
|
|
64
64
|
prerelease: false
|
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements:
|
|
67
|
-
- - "
|
|
67
|
+
- - ">="
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
69
|
version: '0.20'
|
|
70
|
+
- !ruby/object:Gem::Dependency
|
|
71
|
+
name: mysql2
|
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
|
+
requirements:
|
|
74
|
+
- - ">="
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
76
|
+
version: '0'
|
|
77
|
+
type: :development
|
|
78
|
+
prerelease: false
|
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: '0'
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: sqlite3
|
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - ">="
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '0'
|
|
91
|
+
type: :development
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '0'
|
|
70
98
|
- !ruby/object:Gem::Dependency
|
|
71
99
|
name: rubocop
|
|
72
100
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -143,8 +171,13 @@ files:
|
|
|
143
171
|
- bin/console
|
|
144
172
|
- bin/setup
|
|
145
173
|
- evil-seed.gemspec
|
|
174
|
+
- gemfiles/.bundle/config
|
|
146
175
|
- gemfiles/activerecord_4_2.gemfile
|
|
147
176
|
- gemfiles/activerecord_5_0.gemfile
|
|
177
|
+
- gemfiles/activerecord_5_1.gemfile
|
|
178
|
+
- gemfiles/activerecord_5_2.gemfile
|
|
179
|
+
- gemfiles/activerecord_master.gemfile
|
|
180
|
+
- lib/evil-seed.rb
|
|
148
181
|
- lib/evil/seed.rb
|
|
149
182
|
- lib/evil_seed.rb
|
|
150
183
|
- lib/evil_seed/anonymizer.rb
|
|
@@ -177,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
177
210
|
version: '0'
|
|
178
211
|
requirements: []
|
|
179
212
|
rubyforge_project:
|
|
180
|
-
rubygems_version: 2.6
|
|
213
|
+
rubygems_version: 2.7.6
|
|
181
214
|
signing_key:
|
|
182
215
|
specification_version: 4
|
|
183
216
|
summary: Create partial and anonymized production database dumps for use in development
|