evil-seed 0.4.0 → 0.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a046b3aea1b09b90d510fa29ffd79df71e678101e081c72a4f1d419869eecca
4
- data.tar.gz: 6d49dc0c48eb9c143842839697399afbdcf706c03d9164e86e15efad0a75499d
3
+ metadata.gz: beab28e2e707c60ae58a1a30d000975f7b460918f369c7177800f732f34cfee5
4
+ data.tar.gz: 710c2d0a680da6d0c558d50e448048ec5338693e6ce112745ac41a750d34cd3b
5
5
  SHA512:
6
- metadata.gz: 0b9f060b074653b5d6bfc942ff60d90d378fd114b7efaf5100037ab75c8f49bf1fa9b7301c19df0649fc41c3545862811183bda4095efb5bbd90339332e11d35
7
- data.tar.gz: 42369aa53c56fd5200ef78269d6379a7d454a27a1e37941e3503c4498e1e13fee7b1f85b4dd80b2679526c97d289f757babacaa81424109427d9a7a4372bf52a
6
+ metadata.gz: 0de18595e7b4498352c7056f6b9f3c1baf5fe4263cc64f202a1cc06642077767bbe8950c94553cc70fc3157f90687807e851cf6b99403f8a367329045a97bea2
7
+ data.tar.gz: df586316b366d0b4657cf25cdf6ac56610296c6faa630d1dfdc7314f605df7c2f9454c3f7af72a5f9dea1fd7987bdf553fbd5cf44dff7fd6657dd514a7c15206
@@ -0,0 +1,79 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - '**'
7
+ tags-ignore:
8
+ - 'v*'
9
+ pull_request:
10
+
11
+ jobs:
12
+ test:
13
+ name: Ruby ${{ matrix.ruby }}, ActiveRecord ${{ matrix.activerecord }}, ${{ matrix.database }}
14
+ continue-on-error: ${{ matrix.ruby == 'head' }}
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ include:
19
+ - ruby: "head"
20
+ activerecord: "head"
21
+ database: sqlite
22
+ - ruby: "3.2"
23
+ activerecord: "7.0"
24
+ database: postgresql
25
+ - ruby: "3.2"
26
+ activerecord: "7.0"
27
+ database: mysql
28
+ - ruby: "3.2"
29
+ activerecord: "7.0"
30
+ database: sqlite
31
+ - ruby: "3.1"
32
+ activerecord: "6.1"
33
+ database: sqlite
34
+ - ruby: "3.0"
35
+ activerecord: "6.0"
36
+ database: sqlite
37
+ - ruby: "2.7"
38
+ activerecord: "5.2"
39
+ database: sqlite
40
+
41
+ runs-on: ubuntu-latest
42
+
43
+ services:
44
+ postgres:
45
+ image: postgres:15
46
+ env:
47
+ POSTGRES_USER: postgres
48
+ POSTGRES_PASSWORD: postgres
49
+ ports:
50
+ - 5432:5432
51
+ options: >-
52
+ --health-cmd pg_isready
53
+ --health-interval 10s
54
+ --health-timeout 5s
55
+ --health-retries 5
56
+ mysql:
57
+ image: mysql:8.0
58
+ env:
59
+ MYSQL_ALLOW_EMPTY_PASSWORD: yes
60
+ MYSQL_DATABASE: evil_seed_test
61
+ ports:
62
+ - 3306:3306
63
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
64
+
65
+ env:
66
+ CI: true
67
+ ACTIVERECORD_VERSION: "${{ matrix.activerecord }}"
68
+ DB: "${{ matrix.database }}"
69
+ POSTGRES_USER: postgres
70
+ POSTGRES_PASSWORD: postgres
71
+
72
+ steps:
73
+ - uses: actions/checkout@v3
74
+ - uses: ruby/setup-ruby@v1
75
+ with:
76
+ ruby-version: ${{ matrix.ruby }}
77
+ bundler-cache: true
78
+ - name: Run tests
79
+ run: bundle exec rake
data/Gemfile CHANGED
@@ -4,3 +4,15 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in evil-seed.gemspec
6
6
  gemspec
7
+
8
+ activerecord_version = ENV.fetch("ACTIVERECORD_VERSION", "~> 7.0")
9
+ case activerecord_version.upcase
10
+ when "HEAD"
11
+ git "https://github.com/rails/rails.git" do
12
+ gem "activerecord"
13
+ gem "rails"
14
+ end
15
+ else
16
+ activerecord_version = "~> #{activerecord_version}.0" if activerecord_version.match?(/^\d+\.\d+$/)
17
+ gem "activerecord", activerecord_version
18
+ end
data/README.md CHANGED
@@ -88,6 +88,14 @@ EvilSeed.configure do |config|
88
88
  email { Faker::Internet.email }
89
89
  login { |login| "#{login}-test" }
90
90
  end
91
+
92
+ # You can ignore columns for any model. This is specially useful when working
93
+ # with encrypted columns.
94
+ #
95
+ # This will remove the columns even if the model is not a root node and is
96
+ # dumped via an association.
97
+ config.ignore_columns("Profile", :name)
98
+ end
91
99
  ```
92
100
 
93
101
  ### Creating dump
data/evil-seed.gemspec CHANGED
@@ -37,5 +37,4 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency 'rubocop'
38
38
  spec.add_development_dependency 'bundler'
39
39
  spec.add_development_dependency 'pry'
40
- spec.add_development_dependency 'appraisal'
41
40
  end
@@ -11,6 +11,7 @@ module EvilSeed
11
11
 
12
12
  def initialize
13
13
  @record_dumper_class = RecordDumper
14
+ @ignored_columns = Hash.new { |h, k| h[k] = [] }
14
15
  end
15
16
 
16
17
  def roots
@@ -33,10 +34,18 @@ module EvilSeed
33
34
  customizers[model_class.to_s] << Anonymizer.new(model_class, &block)
34
35
  end
35
36
 
37
+ def ignore_columns(model_class, *columns)
38
+ @ignored_columns[model_class] += columns
39
+ end
40
+
36
41
  # Customizer objects for every model
37
42
  # @return [Hash{String => Array<#call>}]
38
43
  def customizers
39
44
  @customizers ||= Hash.new { |h, k| h[k] = [] }
40
45
  end
46
+
47
+ def ignored_columns_for(model_class)
48
+ @ignored_columns[model_class]
49
+ end
41
50
  end
42
51
  end
@@ -60,6 +60,9 @@ module EvilSeed
60
60
  private
61
61
 
62
62
  def dump!
63
+ original_ignored_columns = model_class.ignored_columns
64
+ model_class.ignored_columns += Array(configuration.ignored_columns_for(model_class.sti_name))
65
+ model_class.send(:reload_schema_from_cache) if ActiveRecord.version < Gem::Version.new("6.1.0.rc1") # See https://github.com/rails/rails/pull/37581
63
66
  if identifiers.present?
64
67
  # Don't use AR::Base#find_each as we will get error on Oracle if we will have more than 1000 ids in IN statement
65
68
  identifiers.in_groups_of(MAX_IDENTIFIERS_IN_IN_STMT).each do |ids|
@@ -76,6 +79,8 @@ module EvilSeed
76
79
  end
77
80
  end
78
81
  end
82
+ ensure
83
+ model_class.ignored_columns = original_ignored_columns
79
84
  end
80
85
 
81
86
  def dump_record!(attributes)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EvilSeed
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
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.4.0
4
+ version: 0.5.0
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: 2022-12-07 00:00:00.000000000 Z
12
+ date: 2023-02-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -137,20 +137,6 @@ dependencies:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
- - !ruby/object:Gem::Dependency
141
- name: appraisal
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: '0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
140
  description: " This gem allows you to easily dump and transform subset of your
155
141
  ActiveRecord models and their relations.\n"
156
142
  email:
@@ -160,10 +146,9 @@ executables: []
160
146
  extensions: []
161
147
  extra_rdoc_files: []
162
148
  files:
149
+ - ".github/workflows/test.yml"
163
150
  - ".gitignore"
164
151
  - ".rubocop.yml"
165
- - ".travis.yml"
166
- - Appraisals
167
152
  - Gemfile
168
153
  - LICENSE.txt
169
154
  - README.md
@@ -171,13 +156,6 @@ files:
171
156
  - bin/console
172
157
  - bin/setup
173
158
  - evil-seed.gemspec
174
- - gemfiles/.bundle/config
175
- - gemfiles/activerecord_5_0.gemfile
176
- - gemfiles/activerecord_5_1.gemfile
177
- - gemfiles/activerecord_5_2.gemfile
178
- - gemfiles/activerecord_6_0.gemfile
179
- - gemfiles/activerecord_6_1.gemfile
180
- - gemfiles/activerecord_master.gemfile
181
159
  - lib/evil-seed.rb
182
160
  - lib/evil/seed.rb
183
161
  - lib/evil_seed.rb
@@ -210,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
188
  - !ruby/object:Gem::Version
211
189
  version: '0'
212
190
  requirements: []
213
- rubygems_version: 3.1.6
191
+ rubygems_version: 3.3.7
214
192
  signing_key:
215
193
  specification_version: 4
216
194
  summary: Create partial and anonymized production database dumps for use in development
data/.travis.yml DELETED
@@ -1,82 +0,0 @@
1
- dist: xenial
2
- language: ruby
3
- cache: bundler
4
- sudo: false
5
-
6
- addons:
7
- postgresql: "10"
8
- apt:
9
- sources:
10
- - travis-ci/sqlite3
11
- packages:
12
- - sqlite3
13
-
14
- services:
15
- - mysql
16
- - postgresql
17
-
18
- before_install: gem install bundler -v '~> 1.17'
19
-
20
- matrix:
21
- include:
22
- - rvm: 3.0.2
23
- gemfile: gemfiles/activerecord_master.gemfile
24
- env: "DB=sqlite"
25
- - rvm: 3.0.2
26
- gemfile: gemfiles/activerecord_master.gemfile
27
- env: "DB=postgresql"
28
- - rvm: 3.0.2
29
- gemfile: gemfiles/activerecord_master.gemfile
30
- env: "DB=mysql"
31
- - rvm: 2.7.4
32
- gemfile: gemfiles/activerecord_6_1.gemfile
33
- env: "DB=sqlite"
34
- - rvm: 2.7.4
35
- gemfile: gemfiles/activerecord_6_1.gemfile
36
- env: "DB=postgresql"
37
- - rvm: 2.7.4
38
- gemfile: gemfiles/activerecord_6_1.gemfile
39
- env: "DB=mysql"
40
- - rvm: 2.7.4
41
- gemfile: gemfiles/activerecord_6_0.gemfile
42
- env: "DB=sqlite"
43
- - rvm: 2.7.4
44
- gemfile: gemfiles/activerecord_6_0.gemfile
45
- env: "DB=postgresql"
46
- - rvm: 2.7.4
47
- gemfile: gemfiles/activerecord_6_0.gemfile
48
- env: "DB=mysql"
49
- - rvm: 2.6.8
50
- gemfile: gemfiles/activerecord_5_2.gemfile
51
- env: "DB=sqlite"
52
- - rvm: 2.6.8
53
- gemfile: gemfiles/activerecord_5_2.gemfile
54
- env: "DB=postgresql"
55
- - rvm: 2.6.8
56
- gemfile: gemfiles/activerecord_5_2.gemfile
57
- env: "DB=mysql"
58
- - rvm: 2.5.9
59
- gemfile: gemfiles/activerecord_5_1.gemfile
60
- env: "DB=sqlite"
61
- - rvm: 2.5.9
62
- gemfile: gemfiles/activerecord_5_1.gemfile
63
- env: "DB=postgresql"
64
- - rvm: 2.5.9
65
- gemfile: gemfiles/activerecord_5_1.gemfile
66
- env: "DB=mysql"
67
- - rvm: 2.4.10
68
- gemfile: gemfiles/activerecord_5_0.gemfile
69
- env: "DB=sqlite"
70
- - rvm: 2.4.10
71
- gemfile: gemfiles/activerecord_5_0.gemfile
72
- env: "DB=postgresql"
73
- - rvm: 2.4.10
74
- gemfile: gemfiles/activerecord_5_0.gemfile
75
- env: "DB=mysql"
76
- - rvm: 2.3.8
77
- gemfile: gemfiles/activerecord_4_2.gemfile
78
- env: "DB=postgresql"
79
- - rvm: 2.3.8
80
- gemfile: gemfiles/activerecord_4_2.gemfile
81
- env: "DB=sqlite"
82
- # Please note that gem can't be tested against MySQL on ActiveRecord 4.2 (Dump and restore test doesn't work)!
data/Appraisals DELETED
@@ -1,48 +0,0 @@
1
- appraise 'activerecord-5-0' do
2
- gem 'activerecord', '~> 5.0.0'
3
- gem "pg", ">= 0.20", "< 2.0"
4
- gem 'mysql2', '~> 0.4.4'
5
- gem 'sqlite3', '~> 1.3.6'
6
- end
7
-
8
- appraise 'activerecord-5-1' do
9
- gem 'activerecord', '~> 5.1.0'
10
- gem "pg", ">= 0.20", "< 2.0"
11
- gem 'mysql2', '~> 0.4.4'
12
- gem 'sqlite3', '~> 1.3'
13
- end
14
-
15
- appraise 'activerecord-5-2' do
16
- gem 'activerecord', '~> 5.2.0'
17
- gem "pg", ">= 0.20", "< 2.0"
18
- gem 'mysql2', '~> 0.4.4'
19
- gem 'sqlite3', '~> 1.3'
20
- end
21
-
22
- appraise 'activerecord-6-0' do
23
- gem 'activerecord', '~> 6.0.0'
24
- gem "pg", ">= 0.20", "< 2.0"
25
- gem 'mysql2', '~> 0.4.4'
26
- gem 'sqlite3', '~> 1.4'
27
- end
28
-
29
- appraise 'activerecord-6-0' do
30
- gem 'activerecord', '~> 6.0.0'
31
- gem "pg", ">= 0.20", "< 2.0"
32
- gem 'mysql2', '~> 0.4.4'
33
- gem 'sqlite3', '~> 1.4'
34
- end
35
-
36
- appraise 'activerecord-6-1' do
37
- gem 'activerecord', '~> 6.1.0'
38
- gem "pg", "~> 1.1"
39
- gem 'mysql2', '~> 0.5'
40
- gem 'sqlite3', '~> 1.4'
41
- end
42
-
43
- appraise 'activerecord-master' do
44
- gem 'activerecord', git: 'https://github.com/rails/rails.git'
45
- gem "pg", "~> 1.1"
46
- gem 'mysql2', '~> 0.5'
47
- gem 'sqlite3', '~> 1.4'
48
- end
@@ -1,2 +0,0 @@
1
- ---
2
- BUNDLE_RETRY: "1"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.0.0"
6
- gem "pg", ">= 0.20", "< 2.0"
7
- gem "mysql2", "~> 0.4.4"
8
- gem "sqlite3", "~> 1.3.6"
9
-
10
- gemspec path: "../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.1.0"
6
- gem "pg", ">= 0.20", "< 2.0"
7
- gem "mysql2", "~> 0.4.4"
8
- gem "sqlite3", "~> 1.3"
9
-
10
- gemspec path: "../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.2.0"
6
- gem "pg", ">= 0.20", "< 2.0"
7
- gem "mysql2", "~> 0.4.4"
8
- gem "sqlite3", "~> 1.3"
9
-
10
- gemspec path: "../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 6.0.0"
6
- gem "pg", ">= 0.20", "< 2.0"
7
- gem "mysql2", "~> 0.4.4"
8
- gem "sqlite3", "~> 1.4"
9
-
10
- gemspec path: "../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 6.1.0"
6
- gem "pg", "~> 1.1"
7
- gem "mysql2", "~> 0.5"
8
- gem "sqlite3", "~> 1.4"
9
-
10
- gemspec path: "../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", git: "https://github.com/rails/rails.git"
6
- gem "pg", "~> 1.1"
7
- gem "mysql2", "~> 0.5"
8
- gem "sqlite3", "~> 1.4"
9
-
10
- gemspec path: "../"