sql_tagger 0.0.3 → 0.0.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9b7df0d78b3a94e79c9a8dbe4004b6b42a6b2ca2
4
+ data.tar.gz: 96f28433e8752ffd4c3ffd413ffdc8aa7078967b
5
+ SHA512:
6
+ metadata.gz: b1505eab9c0b0f24dc4fc324b9d360d1e52810e957252c2eef814ba6996c384ce72b78fe173057a62a5d3d15603c08a3c43884979378e6d0f6d81df9f2673e93
7
+ data.tar.gz: b0d48bd55f0f659f5d71e494808dff705079b1726495a3f8ad22914c90e69197e880a2aa92d245f53a9d8875fbc7b680741989bc367d4c382af31d6e514b8717
data/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # sql\_tagger
2
+
3
+ [![Build Status](https://travis-ci.org/SlideShareInc/sql_tagger.svg?branch=master)](https://travis-ci.org/SlideShareInc/sql_tagger)
4
+
5
+ sql\_tagger is a gem that inserts comments into SQL queries. These comments
6
+ include a string from `Kernel#caller` that (hopefully) reveals what Ruby code
7
+ was responsible for performing the query.
8
+
9
+ To use this, just require the appropriate file. For example, to use this with
10
+ the `mysql` gem, write `require 'sql_tagger/mysql'` instead of `require
11
+ 'mysql'`.
12
+
13
+ Before:
14
+
15
+ SELECT 1
16
+
17
+ After:
18
+
19
+ /* program.rb:25:in `some_method' */ SELECT 1
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/lib/sql_tagger.rb CHANGED
@@ -2,6 +2,7 @@ require 'set'
2
2
 
3
3
  # Instances of this class insert stack trace comments into SQL queries.
4
4
  class SqlTagger
5
+ # Version string
5
6
  VERSION = IO.read(
6
7
  File.join(File.dirname(__FILE__), '..', 'VERSION')
7
8
  ).chomp.freeze
@@ -16,7 +17,7 @@ class SqlTagger
16
17
  attr_reader :exclusion_cache
17
18
 
18
19
  def initialize
19
- @exclusion_pattern = /^#{RbConfig::CONFIG['prefix']}|\/bundle\/|\/vendor\//
20
+ @exclusion_pattern = %r{\A#{RbConfig::CONFIG['prefix']}|/gems/}
20
21
  @exclusion_cache = Set.new
21
22
  end
22
23
 
@@ -26,7 +27,7 @@ class SqlTagger
26
27
  # For example, given "SELECT 1", this will return something like
27
28
  # "/* program.rb:25:in `some_method' */ SELECT 1".
28
29
  #
29
- # @param [String] sql SQL query string
30
+ # @param sql [String] SQL query string
30
31
  # @return [String] query string with a comment at the beginning
31
32
  def tag(sql)
32
33
  caller(2).each do |string|
@@ -44,7 +45,7 @@ class SqlTagger
44
45
 
45
46
  # Sets +@exclusion_pattern+.
46
47
  #
47
- # @param [Regexp] regexp regular expression to be used to skip stack strings
48
+ # @param regexp [Regexp] regular expression to be used to skip stack strings
48
49
  def exclusion_pattern=(regexp)
49
50
  @exclusion_pattern = regexp
50
51
  @exclusion_cache.clear
@@ -57,9 +58,12 @@ class SqlTagger
57
58
  attr_accessor :default
58
59
  end
59
60
 
60
- # Mixin that monkey patches the receiver's +initialize+ method to set
61
- # +@sql_tagger+.
61
+ # @see .included
62
62
  module Initializer
63
+ # Callback that monkey patches the receiver's +initialize+ method to set
64
+ # +@sql_tagger+.
65
+ #
66
+ # @param base [Module]
63
67
  def self.included(base)
64
68
  base.send(:alias_method, :initialize_without_sql_tagger, :initialize)
65
69
  base.send(:alias_method, :initialize, :initialize_with_sql_tagger)
@@ -74,22 +78,26 @@ class SqlTagger
74
78
  # @return [SqlTagger] the SqlTagger used to tag queries for this instance
75
79
  attr_accessor :sql_tagger
76
80
 
81
+ # Sets +@sql_tagger+ before initializing
77
82
  def initialize_with_sql_tagger(*args, &block)
78
83
  @sql_tagger = SqlTagger.default
79
84
  initialize_without_sql_tagger(*args, &block)
80
85
  end
81
86
  end
82
87
 
88
+ # Extend this module in your adapter module
83
89
  module ModuleMethods
84
90
  # Callback that includes SqlTagger::Initializer and does method aliasing.
85
91
  #
86
- # @param [Module] base
92
+ # @param base [Module]
87
93
  def included(base)
88
94
  base.send(:include, SqlTagger::Initializer)
89
95
  self.instance_methods.map(&:to_s).grep(/_with_sql_tagger$/).each do |with_method|
90
96
  target = with_method.sub(/_with_sql_tagger$/, '')
91
- base.send(:alias_method, "#{target}_without_sql_tagger", target)
92
- base.send(:alias_method, target, with_method)
97
+ if base.method_defined?(target)
98
+ base.send(:alias_method, "#{target}_without_sql_tagger", target)
99
+ base.send(:alias_method, target, with_method)
100
+ end
93
101
  end
94
102
  end
95
103
  end
@@ -1,6 +1,7 @@
1
1
  require 'sql_tagger'
2
2
  require 'mysql'
3
3
 
4
+ # Adapter for +Mysql+ from the mysql gem
4
5
  module SqlTagger::Mysql
5
6
  extend SqlTagger::ModuleMethods
6
7
 
@@ -1,13 +1,19 @@
1
1
  require 'sql_tagger'
2
2
  require 'mysql2'
3
3
 
4
+ # Adapter for +Mysql2::Client+ from the mysql2 gem
4
5
  module SqlTagger::Mysql2
5
6
  extend SqlTagger::ModuleMethods
6
7
 
7
8
  # @see Mysql2::Client#query
8
- def query_with_sql_tagger(sql, opts ={})
9
+ def query_with_sql_tagger(sql, opts = {})
9
10
  query_without_sql_tagger(@sql_tagger.tag(sql), opts)
10
11
  end
12
+
13
+ # @see Mysql2::Client#prepare
14
+ def prepare_with_sql_tagger(sql)
15
+ prepare_without_sql_tagger(@sql_tagger.tag(sql))
16
+ end
11
17
  end
12
18
 
13
19
  Mysql2::Client.send(:include, SqlTagger::Mysql2)
@@ -0,0 +1,32 @@
1
+ require 'sql_tagger'
2
+ require 'pg'
3
+
4
+ # Adapter for +PG::Connection+ from the pg gem
5
+ module SqlTagger::PG
6
+ extend SqlTagger::ModuleMethods
7
+
8
+ # I wouldn't be surprised if I missed a method (checked against pg 0.18.4)
9
+
10
+ [
11
+ :async_exec,
12
+ :async_query,
13
+ :exec,
14
+ :exec_params,
15
+ :query,
16
+ :send_query,
17
+ ].each do |method|
18
+ define_method("#{method}_with_sql_tagger") do |*args, &blk|
19
+ sql = @sql_tagger.tag(args[0])
20
+ __send__("#{method}_without_sql_tagger", sql, *args[1..-1], &blk)
21
+ end
22
+ end
23
+
24
+ [:prepare, :send_prepare].each do |method|
25
+ define_method("#{method}_with_sql_tagger") do |*args, &blk|
26
+ sql = @sql_tagger.tag(args[1])
27
+ __send__("#{method}_without_sql_tagger", args[0], sql, *args[2..-1], &blk)
28
+ end
29
+ end
30
+ end
31
+
32
+ PG::Connection.send(:include, SqlTagger::PG)
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  shared_examples_for 'connections with sql_tagger' do
2
2
  it 'assigns SqlTagger.default to @sql_tagger' do
3
- @db.sql_tagger.should == SqlTagger.default
3
+ expect(@db.sql_tagger).to eq(SqlTagger.default)
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'sql_tagger/mysql2'
3
3
 
4
- describe Mysql2::Client do
4
+ RSpec.describe Mysql2::Client do
5
5
  before :all do
6
6
  @db = Mysql2::Client.new
7
7
  end
@@ -15,12 +15,35 @@ describe Mysql2::Client do
15
15
  describe '#query' do
16
16
  it 'works' do
17
17
  results = @db.query('SELECT 1 AS one', :symbolize_keys => true)
18
- results.to_a.should == [{:one => 1}]
18
+ expect(results.to_a).to eq([{:one => 1}])
19
19
  end
20
20
 
21
- it 'calls SqlTagger#tag' do
22
- @db.sql_tagger.should_receive(:tag).and_return('/* something.rb */ SELECT 1')
23
- @db.query('SELECT 1')
21
+ it 'passes a tagged query to the original method' do
22
+ query = 'SELECT 1'
23
+ allow(@db.sql_tagger).to receive(:tag).with(query).
24
+ and_return("/* something.rb */ #{query}")
25
+ expect(@db).to receive(:query_without_sql_tagger).
26
+ with("/* something.rb */ #{query}", {})
27
+ @db.query(query)
28
+ end
29
+ end
30
+
31
+ describe '#prepare' do
32
+ let(:query) { 'SELECT ? AS num' }
33
+
34
+ it 'works' do
35
+ stmt = @db.prepare(query)
36
+ result = stmt.execute(7)
37
+ expect(result.to_a).to eq([{'num' => 7}])
38
+ stmt.close
39
+ end
40
+
41
+ it 'passes a tagged query to the original method' do
42
+ allow(@db.sql_tagger).to receive(:tag).with(query).
43
+ and_return("/* something.rb */ #{query}")
44
+ expect(@db).to receive(:prepare_without_sql_tagger).
45
+ with("/* something.rb */ #{query}")
46
+ @db.prepare(query)
24
47
  end
25
48
  end
26
49
  end
@@ -1,7 +1,9 @@
1
1
  require 'spec_helper'
2
2
  require 'sql_tagger/mysql'
3
3
 
4
- describe Mysql do
4
+ RSpec.describe Mysql do
5
+ let(:query) { 'SELECT 1' }
6
+
5
7
  before :all do
6
8
  @db = Mysql.new
7
9
  end
@@ -15,19 +17,22 @@ describe Mysql do
15
17
  describe '#query' do
16
18
  it 'works' do
17
19
  result = @db.query('SELECT 2')
18
- result.fetch_row.should == ['2']
20
+ expect(result.fetch_row).to eq(['2'])
19
21
  result.free
20
22
  end
21
23
 
22
24
  it 'works when given a block' do
23
25
  @db.query('SELECT 5') do |result|
24
- result.fetch_row.should == ['5']
26
+ expect(result.fetch_row).to eq(['5'])
25
27
  end
26
28
  end
27
29
 
28
- it 'calls SqlTagger#tag' do
29
- @db.sql_tagger.should_receive(:tag).and_return('/* something.rb */ SELECT 1')
30
- @db.query('SELECT 1').free
30
+ it 'passes a tagged query to the original method' do
31
+ allow(@db.sql_tagger).to receive(:tag).with(query).
32
+ and_return("/* something.rb */ #{query}")
33
+ expect(@db).to receive(:query_without_sql_tagger).
34
+ with("/* something.rb */ #{query}")
35
+ @db.query(query)
31
36
  end
32
37
  end
33
38
 
@@ -35,14 +40,17 @@ describe Mysql do
35
40
  it 'works' do
36
41
  stmt = @db.prepare('SELECT ?')
37
42
  stmt.execute(9)
38
- stmt.fetch.should == ['9']
43
+ expect(stmt.fetch).to eq(['9'])
39
44
  stmt.free_result
40
45
  stmt.close
41
46
  end
42
47
 
43
- it 'calls SqlTagger#tag' do
44
- @db.sql_tagger.should_receive(:tag).and_return('/* something.rb */ SELECT 1')
45
- @db.prepare('SELECT 1').close
48
+ it 'passes a tagged query to the original method' do
49
+ allow(@db.sql_tagger).to receive(:tag).with(query).
50
+ and_return("/* something.rb */ #{query}")
51
+ expect(@db).to receive(:prepare_without_sql_tagger).
52
+ with("/* something.rb */ #{query}")
53
+ @db.prepare(query)
46
54
  end
47
55
  end
48
56
  end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+ require 'sql_tagger/pg'
3
+
4
+ RSpec.describe PG::Connection do
5
+ let(:query) { 'SELECT 1 AS num' }
6
+
7
+ before :context do
8
+ @db = PG.connect(dbname: 'postgres')
9
+ end
10
+
11
+ after :context do
12
+ @db.finish
13
+ end
14
+
15
+ it_should_behave_like 'connections with sql_tagger'
16
+
17
+ [
18
+ :async_exec,
19
+ :async_query,
20
+ :exec,
21
+ :exec_params,
22
+ :query,
23
+ :send_query,
24
+ ].each do |method|
25
+ describe "##{method}" do
26
+ it 'works' do
27
+ result = @db.__send__(method, query)
28
+ if method == :send_query
29
+ result = @db.get_last_result
30
+ end
31
+ expect(result.to_a).to eq([{'num' => '1'}])
32
+ end
33
+
34
+ it 'passes a tagged query to the original method' do
35
+ allow(@db.sql_tagger).to receive(:tag).with(query).
36
+ and_return("/* something.rb */ #{query}")
37
+ expect(@db).to receive("#{method}_without_sql_tagger").
38
+ with("/* something.rb */ #{query}")
39
+ @db.__send__(method, query)
40
+ end
41
+ end
42
+ end
43
+
44
+ [:prepare, :send_prepare].each do |method|
45
+ describe "##{method}" do
46
+ it 'works' do
47
+ statement_name = "#{method}_test_works"
48
+ @db.__send__(method, statement_name, query)
49
+ result = @db.exec_prepared(statement_name)
50
+ expect(result.to_a).to eq([{'num' => '1'}])
51
+ end
52
+
53
+ it 'passes a tagged query to the original method' do
54
+ statement_name = "#{method}_test_calls"
55
+ allow(@db.sql_tagger).to receive(:tag).with(query).
56
+ and_return("/* something.rb */ #{query}")
57
+ expect(@db).to receive("#{method}_without_sql_tagger").
58
+ with(statement_name, "/* something.rb */ #{query}")
59
+ @db.__send__(method, statement_name, query)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -1,74 +1,99 @@
1
1
  require 'sql_tagger'
2
2
 
3
- describe SqlTagger do
4
- before :each do
5
- @sql_tagger = SqlTagger.new
6
- end
3
+ RSpec.describe SqlTagger do
4
+ subject(:sql_tagger) { SqlTagger.new }
7
5
 
8
6
  describe '#tag' do
9
- before :each do
10
- prefix = '/usr'
11
- @sql_tagger.exclusion_pattern = /^#{prefix}/
12
-
13
- @stack_strings_to_skip = [
14
- "#{prefix}/lib//gems/activerecord-2.3.5/lib/active_record/base.rb:500",
15
- "#{prefix}//gems/actionpack-2.3.5/lib/something.rb:20",
7
+ let(:prefix) { '/usr' }
8
+ let(:stack_strings_to_skip) do
9
+ [
10
+ "#{prefix}/lib/gems/activerecord-2.3.5/lib/active_record/base.rb:500",
11
+ "#{prefix}/gems/actionpack-2.3.5/lib/something.rb:20",
16
12
  ]
17
- @valid_stack_string = '/home/app/myapp/lib/user.rb:150'
18
- @caller_result = @stack_strings_to_skip + [@valid_stack_string]
19
- @sql_tagger.stub!(:caller => @caller_result)
13
+ end
14
+ let(:valid_stack_string) { '/home/app/myapp/lib/user.rb:150' }
15
+ let(:caller_result) { stack_strings_to_skip + [valid_stack_string] }
16
+ let(:sql) { 'SELECT 1' }
20
17
 
21
- @sql = 'SELECT 1'
18
+ before :each do
19
+ sql_tagger.exclusion_pattern = /^#{prefix}/
20
+ allow(sql_tagger).to receive(:caller).and_return(caller_result)
22
21
  end
23
22
 
24
23
  it 'skips stack strings that match @exclusion_pattern' do
25
- @sql_tagger.tag(@sql).should == "/* #{@valid_stack_string} */ #{@sql}"
24
+ expect(sql_tagger.tag(sql)).to eq("/* #{valid_stack_string} */ #{sql}")
26
25
  end
27
26
 
28
27
  it 'returns the 1st stack string that does not match @exclusion_pattern' do
29
- @caller_result.push(
28
+ caller_result.push(
30
29
  '/home/app/myapp/lib/document.rb:788',
31
30
  '/home/app/myapp/runner.rb:29'
32
31
  )
33
- @sql_tagger.tag(@sql).should == "/* #{@valid_stack_string} */ #{@sql}"
32
+ expect(sql_tagger.tag(sql)).to eq("/* #{valid_stack_string} */ #{sql}")
34
33
  end
35
34
 
36
35
  it 'adds skipped stack strings into @exclusion_cache' do
37
- @sql_tagger.exclusion_cache.should be_empty
38
- @sql_tagger.tag(@sql)
39
- @stack_strings_to_skip.each do |string|
40
- @sql_tagger.exclusion_cache.should include(string)
36
+ expect(sql_tagger.exclusion_cache).to be_empty
37
+ sql_tagger.tag(sql)
38
+ stack_strings_to_skip.each do |string|
39
+ expect(sql_tagger.exclusion_cache).to include(string)
41
40
  end
42
- @sql_tagger.exclusion_cache.size.should == @stack_strings_to_skip.length
41
+ expect(sql_tagger.exclusion_cache.size).to eq(stack_strings_to_skip.length)
43
42
  end
44
43
 
45
44
  it 'skips strings in @exclusion_cache' do
46
45
  correct_string = '/home/myapp/i.rb:2890'
47
- @caller_result.push(correct_string)
48
- @sql_tagger.exclusion_cache.add(@valid_stack_string)
49
- @sql_tagger.tag(@sql).should == "/* #{correct_string} */ #{@sql}"
46
+ caller_result.push(correct_string)
47
+ sql_tagger.exclusion_cache.add(valid_stack_string)
48
+ expect(sql_tagger.tag(sql)).to eq("/* #{correct_string} */ #{sql}")
50
49
  end
51
50
  end
52
51
 
53
52
  describe '#exclusion_pattern=' do
54
53
  it 'sets @exclusion_pattern' do
55
- @sql_tagger.exclusion_pattern = /regexp/
56
- @sql_tagger.exclusion_pattern.should == /regexp/
54
+ sql_tagger.exclusion_pattern = /regexp/
55
+ expect(sql_tagger.exclusion_pattern).to eq(/regexp/)
57
56
  end
58
57
 
59
58
  it 'clears @exclusion_cache' do
60
- @sql_tagger.exclusion_cache.merge(['/usr', '/opt'])
61
- @sql_tagger.exclusion_pattern = /regexp/
62
- @sql_tagger.exclusion_cache.should be_empty
59
+ sql_tagger.exclusion_cache.merge(['/usr', '/opt'])
60
+ sql_tagger.exclusion_pattern = /regexp/
61
+ expect(sql_tagger.exclusion_cache).to be_empty
63
62
  end
64
63
  end
65
64
 
66
65
  describe '.default' do
67
66
  it 'returns a functional SqlTagger' do
68
- SqlTagger.default.should be_a(SqlTagger)
67
+ expect(SqlTagger.default).to be_a(SqlTagger)
69
68
  # The following is to ensure that SqlTagger.default is set after
70
69
  # #initialize is defined.
71
- SqlTagger.default.exclusion_pattern.should be_a(Regexp)
70
+ expect(SqlTagger.default.exclusion_pattern).to be_a(Regexp)
71
+ end
72
+ end
73
+
74
+ describe SqlTagger::ModuleMethods do
75
+ describe '#included' do
76
+ let(:adapter_class) do
77
+ Module.new do
78
+ extend SqlTagger::ModuleMethods
79
+
80
+ def foo_with_sql_tagger; end
81
+
82
+ def bar_with_sql_tagger; end
83
+ end
84
+ end
85
+
86
+ let(:receiver_class) do
87
+ Class.new do
88
+ def foo; end
89
+ end
90
+ end
91
+
92
+ it 'does not fail for methods that do not exist on the receiver' do
93
+ expect {
94
+ receiver_class.send(:include, adapter_class)
95
+ }.not_to raise_error
96
+ end
72
97
  end
73
98
  end
74
99
  end
data/sql_tagger.gemspec CHANGED
@@ -5,12 +5,16 @@ Gem::Specification.new do |s|
5
5
  s.homepage = 'https://github.com/SlideShareInc/sql_tagger'
6
6
  s.summary = 'Stack trace comments for SQL queries'
7
7
  s.description = 'sql_tagger inserts stack trace comments into SQL queries.'
8
+ s.license = 'MIT'
8
9
 
9
- s.add_development_dependency('rspec')
10
+ s.add_development_dependency('rspec', '~> 3.4')
11
+
12
+ s.add_development_dependency('appraisal', '~> 2.1.0')
10
13
  s.add_development_dependency('mysql')
11
14
  s.add_development_dependency('mysql2')
15
+ s.add_development_dependency('pg')
12
16
 
13
- s.files = ['MIT-LICENSE', 'README.rdoc', 'VERSION', 'sql_tagger.gemspec'] +
17
+ s.files = ['MIT-LICENSE', 'README.md', 'VERSION', 'sql_tagger.gemspec'] +
14
18
  Dir.glob('lib/**/*')
15
19
 
16
20
  s.test_files = Dir.glob('spec/**/*')
metadata CHANGED
@@ -1,121 +1,132 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sql_tagger
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Toby Hsieh
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2013-07-11 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.4'
20
+ type: :development
23
21
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '3.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: appraisal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.0
33
34
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: mysql
37
35
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 2.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: mysql
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
47
48
  type: :development
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
50
56
  name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
51
63
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
61
76
  type: :development
62
- version_requirements: *id003
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
63
83
  description: sql_tagger inserts stack trace comments into SQL queries.
64
84
  email:
65
85
  executables: []
66
-
67
86
  extensions: []
68
-
69
87
  extra_rdoc_files: []
70
-
71
- files:
88
+ files:
72
89
  - MIT-LICENSE
73
- - README.rdoc
90
+ - README.md
74
91
  - VERSION
75
92
  - sql_tagger.gemspec
76
93
  - lib/sql_tagger/mysql.rb
77
94
  - lib/sql_tagger/mysql2.rb
95
+ - lib/sql_tagger/pg.rb
78
96
  - lib/sql_tagger.rb
79
97
  - spec/spec_helper.rb
80
98
  - spec/sql_tagger/mysql2_spec.rb
81
99
  - spec/sql_tagger/mysql_spec.rb
100
+ - spec/sql_tagger/pg_spec.rb
82
101
  - spec/sql_tagger_spec.rb
83
- has_rdoc: true
84
102
  homepage: https://github.com/SlideShareInc/sql_tagger
85
- licenses: []
86
-
103
+ licenses:
104
+ - MIT
105
+ metadata: {}
87
106
  post_install_message:
88
107
  rdoc_options: []
89
-
90
- require_paths:
108
+ require_paths:
91
109
  - lib
92
- required_ruby_version: !ruby/object:Gem::Requirement
93
- none: false
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- hash: 3
98
- segments:
99
- - 0
100
- version: "0"
101
- required_rubygems_version: !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
110
120
  requirements: []
111
-
112
121
  rubyforge_project:
113
- rubygems_version: 1.3.7
122
+ rubygems_version: 2.0.14.1
114
123
  signing_key:
115
- specification_version: 3
124
+ specification_version: 4
116
125
  summary: Stack trace comments for SQL queries
117
- test_files:
126
+ test_files:
118
127
  - spec/spec_helper.rb
119
128
  - spec/sql_tagger/mysql2_spec.rb
120
129
  - spec/sql_tagger/mysql_spec.rb
130
+ - spec/sql_tagger/pg_spec.rb
121
131
  - spec/sql_tagger_spec.rb
132
+ has_rdoc:
data/README.rdoc DELETED
@@ -1,14 +0,0 @@
1
- = sql_tagger
2
-
3
- +sql_tagger+ is a gem that inserts comments into SQL queries. These comments
4
- include a string from <tt>Kernel#caller</tt> that (hopefully) reveals what Ruby
5
- code was responsible for performing the query.
6
-
7
- To use this, just require the appropriate file. For example, to use this with
8
- the +mysql+ gem, perform <tt>require 'sql_tagger/mysql'</tt> instead of
9
- <tt>require 'mysql'</tt>.
10
-
11
- Before:
12
- SELECT 1
13
- After:
14
- /* program.rb:25:in `some_method' */ SELECT 1