Module: SqlFootprint
- Defined in:
- lib/sql_footprint.rb,
lib/sql_footprint/version.rb
Constant Summary collapse
- FILENAME =
'footprint.sql'.freeze
- NEWLINE =
"\n".freeze
- VERSION =
'0.4.1'.freeze
Class Method Summary collapse
- .capture(sql) ⇒ Object
- .exclude ⇒ Object
- .lines ⇒ Object
- .start ⇒ Object
- .stop ⇒ Object
- .strip_in_clause_values(sql) ⇒ Object
- .strip_integer_values(sql) ⇒ Object
- .strip_string_values(sql) ⇒ Object
- .strip_values(sql) ⇒ Object
Class Method Details
.capture(sql) ⇒ Object
35 36 37 38 |
# File 'lib/sql_footprint.rb', line 35 def capture sql return unless @capture @lines << strip_values(sql) end |
.exclude ⇒ Object
24 25 26 27 28 29 |
# File 'lib/sql_footprint.rb', line 24 def exclude @capture = false yield ensure @capture = true end |
.lines ⇒ Object
31 32 33 |
# File 'lib/sql_footprint.rb', line 31 def lines @lines.sort end |
.start ⇒ Object
14 15 16 17 |
# File 'lib/sql_footprint.rb', line 14 def start @capture = true @lines = Set.new end |
.stop ⇒ Object
19 20 21 22 |
# File 'lib/sql_footprint.rb', line 19 def stop @capture = false File.write FILENAME, lines.join(NEWLINE) end |
.strip_in_clause_values(sql) ⇒ Object
47 48 49 50 51 |
# File 'lib/sql_footprint.rb', line 47 def strip_in_clause_values sql sql.gsub(/\sIN\s\((.*)\)/) do |_match| ' IN (values-redacted)' end end |
.strip_integer_values(sql) ⇒ Object
53 54 55 56 57 |
# File 'lib/sql_footprint.rb', line 53 def strip_integer_values sql sql.gsub(/\s\=\s([0-9]+)/) do |_match| ' = number-redacted' end end |
.strip_string_values(sql) ⇒ Object
59 60 61 62 63 |
# File 'lib/sql_footprint.rb', line 59 def strip_string_values sql sql.gsub(/\s'(.*)\'/) do |_match| " 'value-redacted'" end end |
.strip_values(sql) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/sql_footprint.rb', line 40 def strip_values sql sql = sql.gsub(/\[\[.*\]\]/, '') sql = strip_string_values(sql) sql = strip_integer_values(sql) strip_in_clause_values(sql) end |