sql_footprint 1.1.4 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20286f7fb8da1497b63f560606c6ef7cbc3e1ec4
4
- data.tar.gz: 7f87751608747c8d8d612992894b8b1a863ee3d3
3
+ metadata.gz: 84b22c92f609874bba08d5dff4c1911f1a1ecbcd
4
+ data.tar.gz: 02acc2c7eade2a43f74a979714beeb84d6c7e3b4
5
5
  SHA512:
6
- metadata.gz: 5f21dceb6ce07feb00e8a58edc0cf1d73ccb5c54ea5b6922f33755d9d1c95569a028ab79297290821b1a466096a4fb85c938bd7d2993291063a024096a9b4012
7
- data.tar.gz: 7387c7faa0ca68bb205511daf6365f6d317959b7b7568490d583eb4528bab56cbf650581be648b7c7eb7a7b5f765ab19aca27b06cbb999cafb45c6933e703843
6
+ metadata.gz: 8d75771950320e3347ecfd17fc1b1ca49ea46be822fd2f78e6938273304c672709819a7ecba669aee96a456453fbbe521887f6cfb0d2d8df5bd717dc3a0a4cb1
7
+ data.tar.gz: 465b64e43ee316deb1f89dfeaf03f5441bb710184ecf5e8c4daccfc39d79ac9c64cf11c2659ddfe114e021cf463e814097285d0ec23562cb326989c3cb9aa474
data/.travis.yml CHANGED
@@ -1,15 +1,12 @@
1
+ sudo: false
2
+ cache: bundler
1
3
  language: ruby
2
4
  script:
3
5
  - bundle exec rspec
4
6
  - bundle exec rubocop --display-cop-names
5
- sudo: false
6
7
  rvm:
7
- - 1.9.3
8
- - 2.0.0
8
+ - 2.0
9
9
  - 2.1
10
10
  - 2.2
11
- - 2.3.0
12
- - rbx
13
- matrix:
14
- allow_failures:
15
- - rvm: rbx
11
+ - 2.3
12
+ - 2.4
data/README.md CHANGED
@@ -34,6 +34,15 @@ SqlFootprint.start
34
34
  Minitest.after_run { SqlFootprint.stop }
35
35
  ```
36
36
 
37
+ You can also add a Custom rule to SqlAnonymizer before running `start`:
38
+ ```ruby
39
+ RSpec.configure do |config|
40
+ SqlFootprint::SqlAnonymizer.add_rule(/SELECT (.+) AS (.+)/, 'SELECT [redacted] AS [redacted]')
41
+ config.before(:suite) { SqlFootprint.start }
42
+ config.after(:suite) { SqlFootprint.stop }
43
+ end
44
+ ```
45
+
37
46
  #### Outputs
38
47
  After running your specs you'll find a 'footprint.*.sql' file in your project.
39
48
  Footprints are per-database. For example, if you're using DB1 AND DB2 in your app, you would end up with two footprint files. (footprint.db1.sql, footprint.db2.sql)
@@ -1,17 +1,25 @@
1
1
  module SqlFootprint
2
2
  class SqlAnonymizer
3
- GSUBS = {
3
+ @rules = {
4
4
  /\sIN\s\(.*\)/ => ' IN (values-redacted)'.freeze, # IN clauses
5
5
  /([\s\(])'.*'/ => "\\1'value-redacted'".freeze, # literal strings
6
6
  /N''.*''/ => "N''value-redacted''".freeze, # literal MSSQL strings
7
- /\s+(!=|=|<|>|<=|>=)\s+[0-9]+/ => ' \1 number-redacted', # numbers
8
- /\s+VALUES\s+\(.+\)/ => ' VALUES (values-redacted)', # VALUES
9
- }.freeze
7
+ /\s+(!=|=|<|>|<=|>=)\s+[0-9]+/ => ' \1 number-redacted'.freeze, # numbers
8
+ /\s+VALUES\s+\(.+\)/ => ' VALUES (values-redacted)'.freeze, # VALUES
9
+ }
10
10
 
11
11
  def anonymize sql
12
- GSUBS.reduce(sql) do |s, (regex, replacement)|
12
+ self.class.rules.reduce(sql) do |s, (regex, replacement)|
13
13
  s.gsub regex, replacement
14
14
  end
15
15
  end
16
+
17
+ class << self
18
+ attr_reader :rules
19
+
20
+ def add_rule regex, replacement
21
+ @rules[regex] = replacement
22
+ end
23
+ end
16
24
  end
17
25
  end
@@ -1,3 +1,3 @@
1
1
  module SqlFootprint
2
- VERSION = '1.1.4'.freeze
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sql_footprint
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Joyce
@@ -10,144 +10,144 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-03-08 00:00:00.000000000 Z
13
+ date: 2017-09-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.0'
22
- - - <
22
+ - - "<"
23
23
  - !ruby/object:Gem::Version
24
24
  version: '5.0'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
28
  requirements:
29
- - - '>='
29
+ - - ">="
30
30
  - !ruby/object:Gem::Version
31
31
  version: '3.0'
32
- - - <
32
+ - - "<"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '5.0'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: activesupport
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '3.0'
42
- - - <
42
+ - - "<"
43
43
  - !ruby/object:Gem::Version
44
44
  version: '5.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
- - - '>='
49
+ - - ">="
50
50
  - !ruby/object:Gem::Version
51
51
  version: '3.0'
52
- - - <
52
+ - - "<"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.7'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.7'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '10.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '10.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sqlite3
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.37.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.37.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  description: Check your footprint file into source control
@@ -159,10 +159,10 @@ executables: []
159
159
  extensions: []
160
160
  extra_rdoc_files: []
161
161
  files:
162
- - .gitignore
163
- - .rspec
164
- - .rubocop.yml
165
- - .travis.yml
162
+ - ".gitignore"
163
+ - ".rspec"
164
+ - ".rubocop.yml"
165
+ - ".travis.yml"
166
166
  - Gemfile
167
167
  - History.md
168
168
  - README.md
@@ -187,17 +187,17 @@ require_paths:
187
187
  - lib
188
188
  required_ruby_version: !ruby/object:Gem::Requirement
189
189
  requirements:
190
- - - '>='
190
+ - - ">="
191
191
  - !ruby/object:Gem::Version
192
192
  version: '0'
193
193
  required_rubygems_version: !ruby/object:Gem::Requirement
194
194
  requirements:
195
- - - '>='
195
+ - - ">="
196
196
  - !ruby/object:Gem::Version
197
197
  version: '0'
198
198
  requirements: []
199
199
  rubyforge_project:
200
- rubygems_version: 2.4.8
200
+ rubygems_version: 2.6.13
201
201
  signing_key:
202
202
  specification_version: 4
203
203
  summary: Keeps your DBA happy.