sql_safety_net 2.0.1 → 2.0.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 +4 -4
 - data/.gitignore +6 -7
 - data/Appraisals +20 -0
 - data/Rakefile +20 -0
 - data/gemfiles/rails_3.2.gemfile +9 -0
 - data/gemfiles/rails_4.0.gemfile +9 -0
 - data/gemfiles/rails_4.1.gemfile +9 -0
 - data/gemfiles/rails_4.2.gemfile +9 -0
 - data/lib/sql_safety_net/connection_adapter.rb +14 -13
 - data/lib/sql_safety_net/version.rb +1 -1
 - data/spec/connection_adapter_spec.rb +19 -16
 - data/spec/spec_helper.rb +0 -6
 - data/sql_safety_net.gemspec +8 -7
 - metadata +47 -10
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8bea9f78919f0aeda8e3d9a7e63d91c951f6fce7
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ec3d635668247f26bf19b93eacacaef930e2e328
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: de20705e4e92e7c9979640ed70aaebe0c1b7079ec688e530a96220cdd3da383175533b71269b4ea06843ea50488d0c21a90d97fce0bd40d7bb8bacd8d7b4d137
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0078dcbd525431aaa892514e7543c29794f74b56b8949be06cc4bb7e47a4334fd65233e5d8a9ee8d2edca98113d97e80281b85c0734a1b12a0cfd03afc69a0d3
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Appraisals
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Install gems for all appraisal definitions:
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            #     $ appraisal install
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # To run tests on different versions:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     $ appraisal activerecord_x.x rspec spec
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            [
         
     | 
| 
      
 10 
     | 
    
         
            +
              [ '3.2', '~> 3.2.0' ],
         
     | 
| 
      
 11 
     | 
    
         
            +
              [ '4.0', '~> 4.0.0' ],
         
     | 
| 
      
 12 
     | 
    
         
            +
              [ '4.1', '~> 4.1.0' ],
         
     | 
| 
      
 13 
     | 
    
         
            +
              [ '4.2', '~> 4.2.0' ],
         
     | 
| 
      
 14 
     | 
    
         
            +
            ].each do |ver_name, ver_req|
         
     | 
| 
      
 15 
     | 
    
         
            +
              appraise "rails_#{ver_name}" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                gem 'activerecord', ver_req
         
     | 
| 
      
 17 
     | 
    
         
            +
                gem 'activesupport', ver_req
         
     | 
| 
      
 18 
     | 
    
         
            +
                gem 'actionpack', ver_req
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'bundler/gem_tasks'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'bundler/setup'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            # Note: if you get this error: "Bundler could not find compatible versions for gem ..."
         
     | 
| 
      
 5 
     | 
    
         
            +
            # try deleting Gemfile.lock (usually happens when switching branches).
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            task default: :appraise_all
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # This is slightly different from 'appraisal COMMAND' because it continues even if a definition fails.
         
     | 
| 
      
 10 
     | 
    
         
            +
            desc "Run rspecs for all appraisals"
         
     | 
| 
      
 11 
     | 
    
         
            +
            task :appraise_all do
         
     | 
| 
      
 12 
     | 
    
         
            +
              success_map = {}
         
     | 
| 
      
 13 
     | 
    
         
            +
              `bundle exec appraisal list`.lines.map(&:chomp).each do |appraise_def|
         
     | 
| 
      
 14 
     | 
    
         
            +
                 success = system('appraisal', appraise_def, 'rspec', 'spec')
         
     | 
| 
      
 15 
     | 
    
         
            +
                 success_map[appraise_def] = success
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
              puts "\n===== Test Summary ====="
         
     | 
| 
      
 18 
     | 
    
         
            +
              success_map.each do |appraise_def, success|
         
     | 
| 
      
 19 
     | 
    
         
            +
                puts "#{appraise_def}: #{success ? 'no failures (but check pending)' : 'failed'}"
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -35,24 +35,17 @@ module SqlSafetyNet 
     | 
|
| 
       35 
35 
     | 
    
         
             
                    results = yield
         
     | 
| 
       36 
36 
     | 
    
         
             
                    elapsed_time = Time.now - start_time
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                     
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
       40 
     | 
    
         
            -
                      sql = "#{sql} #{binds.collect{|col, val| [col.name, val]}.inspect}"
         
     | 
| 
       41 
     | 
    
         
            -
                    end
         
     | 
| 
       42 
     | 
    
         
            -
                    rows = results.size
         
     | 
| 
      
 38 
     | 
    
         
            +
                    # In Rails 4, results is an ActiveRecord::Result, so use #count
         
     | 
| 
      
 39 
     | 
    
         
            +
                    row_count = results.count
         
     | 
| 
       43 
40 
     | 
    
         
             
                    result_size = 0
         
     | 
| 
       44 
41 
     | 
    
         
             
                    results.each do |row|
         
     | 
| 
       45 
42 
     | 
    
         
             
                      values = row.is_a?(Hash) ? row.values : row
         
     | 
| 
       46 
43 
     | 
    
         
             
                      values.each{|val| result_size += val.to_s.size if val}
         
     | 
| 
       47 
44 
     | 
    
         
             
                    end
         
     | 
| 
       48 
45 
     | 
    
         
             
                    cached = CacheStore.in_fetch_block?
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                     
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                    else
         
     | 
| 
       53 
     | 
    
         
            -
                      sql_str = to_sql(sql, binds)
         
     | 
| 
       54 
     | 
    
         
            -
                    end
         
     | 
| 
       55 
     | 
    
         
            -
                    query_info = QueryInfo.new(sql_str, :elapsed_time => elapsed_time, :rows => rows, :result_size => result_size, :cached => cached)
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    query_info = QueryInfo.new(append_binds(sql, binds), :elapsed_time => elapsed_time,
         
     | 
| 
      
 48 
     | 
    
         
            +
                                               :rows => row_count, :result_size => result_size, :cached => cached)
         
     | 
| 
       56 
49 
     | 
    
         
             
                    queries << query_info
         
     | 
| 
       57 
50 
     | 
    
         | 
| 
       58 
51 
     | 
    
         
             
                    # If connection includes a query plan analyzer then alert on issues in the query plan.
         
     | 
| 
         @@ -67,6 +60,14 @@ module SqlSafetyNet 
     | 
|
| 
       67 
60 
     | 
    
         
             
                    yield
         
     | 
| 
       68 
61 
     | 
    
         
             
                  end
         
     | 
| 
       69 
62 
     | 
    
         
             
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                # the returned string is for display only; it's not valid sql
         
     | 
| 
      
 65 
     | 
    
         
            +
                def append_binds(sql_str, binds)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  if binds.empty?
         
     | 
| 
      
 67 
     | 
    
         
            +
                    sql_str
         
     | 
| 
      
 68 
     | 
    
         
            +
                  else
         
     | 
| 
      
 69 
     | 
    
         
            +
                    "#{sql_str} #{binds.map {|col, val| [col.name, val] }.inspect}"
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
       71 
72 
     | 
    
         
             
              end
         
     | 
| 
       72 
73 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe SqlSafetyNet::ConnectionAdapter do
         
     | 
| 
      
 4 
     | 
    
         
            +
              # ActiveRecord 4's conn.select returns an ActiveRecord::Result. This normalizes it so we can test on both AR 3.2 & 4.x
         
     | 
| 
      
 5 
     | 
    
         
            +
              def hashify_select_result(results)
         
     | 
| 
      
 6 
     | 
    
         
            +
                results.respond_to?(:to_hash) ? results.to_hash : results
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
       5 
9 
     | 
    
         
             
              let(:connection){ SqlSafetyNet::TestModel.connection }
         
     | 
| 
       6 
10 
     | 
    
         | 
| 
         @@ -17,7 +21,9 @@ describe SqlSafetyNet::ConnectionAdapter do 
     | 
|
| 
       17 
21 
     | 
    
         | 
| 
       18 
22 
     | 
    
         
             
                it "should analyze queries in the select method" do
         
     | 
| 
       19 
23 
     | 
    
         
             
                  connection.should_receive(:analyze_query).with("select name, value from test_models", "SQL", []).and_yield
         
     | 
| 
       20 
     | 
    
         
            -
                   
     | 
| 
      
 24 
     | 
    
         
            +
                  hashify_select_result(
         
     | 
| 
      
 25 
     | 
    
         
            +
                    connection.send(:select, "select name, value from test_models", "SQL")
         
     | 
| 
      
 26 
     | 
    
         
            +
                  ).should == [{"name"=>"test", "value"=>10}]
         
     | 
| 
       21 
27 
     | 
    
         
             
                end
         
     | 
| 
       22 
28 
     | 
    
         
             
              end
         
     | 
| 
       23 
29 
     | 
    
         | 
| 
         @@ -34,7 +40,7 @@ describe SqlSafetyNet::ConnectionAdapter do 
     | 
|
| 
       34 
40 
     | 
    
         
             
                  it "should analyze select statements" do
         
     | 
| 
       35 
41 
     | 
    
         
             
                    SqlSafetyNet::QueryAnalysis.capture do |analysis|
         
     | 
| 
       36 
42 
     | 
    
         
             
                      results = connection.send(:select, "select name, value from test_models order by name")
         
     | 
| 
       37 
     | 
    
         
            -
                      results.should == [{"name" => "foo", "value" => 100}, {"name" => "test", "value" => 10}]
         
     | 
| 
      
 43 
     | 
    
         
            +
                      hashify_select_result(results).should == [{"name" => "foo", "value" => 100}, {"name" => "test", "value" => 10}]
         
     | 
| 
       38 
44 
     | 
    
         
             
                      analysis.queries.size.should == 1
         
     | 
| 
       39 
45 
     | 
    
         
             
                      query_info = analysis.queries.first
         
     | 
| 
       40 
46 
     | 
    
         
             
                      query_info.sql.should == "select name, value from test_models order by name"
         
     | 
| 
         @@ -44,20 +50,17 @@ describe SqlSafetyNet::ConnectionAdapter do 
     | 
|
| 
       44 
50 
     | 
    
         
             
                    end
         
     | 
| 
       45 
51 
     | 
    
         
             
                  end
         
     | 
| 
       46 
52 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                   
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                       
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                        query_info.result_size.should == 6
         
     | 
| 
       59 
     | 
    
         
            -
                        query_info.elapsed_time.should > 0
         
     | 
| 
       60 
     | 
    
         
            -
                      end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  it "should analyze select statements using bind variables" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                    SqlSafetyNet::QueryAnalysis.capture do |analysis|
         
     | 
| 
      
 55 
     | 
    
         
            +
                      name_column = SqlSafetyNet::TestModel.columns_hash["name"]
         
     | 
| 
      
 56 
     | 
    
         
            +
                      results = connection.send(:select, "select name, value from test_models where name = ? order by name", "SQL", [[name_column, "foo"]])
         
     | 
| 
      
 57 
     | 
    
         
            +
                      hashify_select_result(results).should == [{"name" => "foo", "value" => 100}]
         
     | 
| 
      
 58 
     | 
    
         
            +
                      analysis.queries.size.should == 1
         
     | 
| 
      
 59 
     | 
    
         
            +
                      query_info = analysis.queries.first
         
     | 
| 
      
 60 
     | 
    
         
            +
                      query_info.sql.should == 'select name, value from test_models where name = ? order by name [["name", "foo"]]'
         
     | 
| 
      
 61 
     | 
    
         
            +
                      query_info.rows.should == 1
         
     | 
| 
      
 62 
     | 
    
         
            +
                      query_info.result_size.should == 6
         
     | 
| 
      
 63 
     | 
    
         
            +
                      query_info.elapsed_time.should > 0
         
     | 
| 
       61 
64 
     | 
    
         
             
                    end
         
     | 
| 
       62 
65 
     | 
    
         
             
                  end
         
     | 
| 
       63 
66 
     | 
    
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -1,11 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            active_record_version = ENV['ACTIVE_RECORD_VERSION'] || ">=3.2.0"
         
     | 
| 
       4 
     | 
    
         
            -
            gem 'activerecord', active_record_version
         
     | 
| 
       5 
     | 
    
         
            -
            gem 'activesupport', active_record_version
         
     | 
| 
       6 
1 
     | 
    
         
             
            require 'active_support/all'
         
     | 
| 
       7 
2 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
       8 
     | 
    
         
            -
            puts "Testing against activerecord #{ActiveRecord::VERSION::STRING}"
         
     | 
| 
       9 
3 
     | 
    
         | 
| 
       10 
4 
     | 
    
         
             
            begin
         
     | 
| 
       11 
5 
     | 
    
         
             
              require 'simplecov'
         
     | 
    
        data/sql_safety_net.gemspec
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
     | 
|
| 
       4 
4 
     | 
    
         
             
            require 'sql_safety_net/version'
         
     | 
| 
       5 
5 
     | 
    
         
             
            Gem::Specification.new do |spec|
         
     | 
| 
       6 
6 
     | 
    
         
             
              spec.name          = 'sql_safety_net'
         
     | 
| 
       7 
     | 
    
         
            -
              spec.version       = SqlSafetyNet::VERSION
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.version       = SqlSafetyNet::VERSION.dup  # ruby 1.9 needs dup
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.authors       = ['Brian Durand', 'Milan Dobrota']
         
     | 
| 
       9 
9 
     | 
    
         
             
              spec.email         = ['mdobrota@tribpub.com']
         
     | 
| 
       10 
10 
     | 
    
         
             
              spec.summary       = 'Debug SQL statements in ActiveRecord'
         
     | 
| 
         @@ -16,12 +16,13 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       16 
16 
     | 
    
         
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
       17 
17 
     | 
    
         
             
              spec.require_paths = ['lib']
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
              spec.add_runtime_dependency 'activesupport', ' 
     | 
| 
       20 
     | 
    
         
            -
              spec.add_runtime_dependency 'activerecord', ' 
     | 
| 
       21 
     | 
    
         
            -
              spec.add_runtime_dependency 'actionpack', ' 
     | 
| 
      
 19 
     | 
    
         
            +
              spec.add_runtime_dependency 'activesupport', '>= 3.2.0', '< 4.3'
         
     | 
| 
      
 20 
     | 
    
         
            +
              spec.add_runtime_dependency 'activerecord' , '>= 3.2.0', '< 4.3'
         
     | 
| 
      
 21 
     | 
    
         
            +
              spec.add_runtime_dependency 'actionpack'   , '>= 3.2.0', '< 4.3'
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
              spec.add_development_dependency 'rspec', '~> 2. 
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_development_dependency 'rspec'       , '~> 2.99'
         
     | 
| 
       24 
24 
     | 
    
         
             
              spec.add_development_dependency 'sqlite3-ruby', '>= 0'
         
     | 
| 
       25 
     | 
    
         
            -
              spec.add_development_dependency 'bundler', '~> 1.7'
         
     | 
| 
       26 
     | 
    
         
            -
              spec.add_development_dependency 'rake', '~> 10.0'
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_development_dependency 'bundler'     , '~> 1.7'
         
     | 
| 
      
 26 
     | 
    
         
            +
              spec.add_development_dependency 'rake'        , '~> 10.0'
         
     | 
| 
      
 27 
     | 
    
         
            +
              spec.add_development_dependency 'appraisal'  , '~> 2.0'
         
     | 
| 
       27 
28 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sql_safety_net
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brian Durand
         
     | 
| 
         @@ -9,64 +9,82 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2015-09-09 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: activesupport
         
     | 
| 
       16 
16 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                requirements:
         
     | 
| 
       18 
     | 
    
         
            -
                - - " 
     | 
| 
      
 18 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       19 
19 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       20 
20 
     | 
    
         
             
                    version: 3.2.0
         
     | 
| 
      
 21 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 23 
     | 
    
         
            +
                    version: '4.3'
         
     | 
| 
       21 
24 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       22 
25 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       23 
26 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       24 
27 
     | 
    
         
             
                requirements:
         
     | 
| 
       25 
     | 
    
         
            -
                - - " 
     | 
| 
      
 28 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       26 
29 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       27 
30 
     | 
    
         
             
                    version: 3.2.0
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '4.3'
         
     | 
| 
       28 
34 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       29 
35 
     | 
    
         
             
              name: activerecord
         
     | 
| 
       30 
36 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       31 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       32 
     | 
    
         
            -
                - - " 
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       33 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       34 
40 
     | 
    
         
             
                    version: 3.2.0
         
     | 
| 
      
 41 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 43 
     | 
    
         
            +
                    version: '4.3'
         
     | 
| 
       35 
44 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       36 
45 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       37 
46 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       38 
47 
     | 
    
         
             
                requirements:
         
     | 
| 
       39 
     | 
    
         
            -
                - - " 
     | 
| 
      
 48 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       40 
49 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       41 
50 
     | 
    
         
             
                    version: 3.2.0
         
     | 
| 
      
 51 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 52 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 53 
     | 
    
         
            +
                    version: '4.3'
         
     | 
| 
       42 
54 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       43 
55 
     | 
    
         
             
              name: actionpack
         
     | 
| 
       44 
56 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       45 
57 
     | 
    
         
             
                requirements:
         
     | 
| 
       46 
     | 
    
         
            -
                - - " 
     | 
| 
      
 58 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       47 
59 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       48 
60 
     | 
    
         
             
                    version: 3.2.0
         
     | 
| 
      
 61 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 62 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 63 
     | 
    
         
            +
                    version: '4.3'
         
     | 
| 
       49 
64 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       50 
65 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       51 
66 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       52 
67 
     | 
    
         
             
                requirements:
         
     | 
| 
       53 
     | 
    
         
            -
                - - " 
     | 
| 
      
 68 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       54 
69 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       55 
70 
     | 
    
         
             
                    version: 3.2.0
         
     | 
| 
      
 71 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 72 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 73 
     | 
    
         
            +
                    version: '4.3'
         
     | 
| 
       56 
74 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       57 
75 
     | 
    
         
             
              name: rspec
         
     | 
| 
       58 
76 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       59 
77 
     | 
    
         
             
                requirements:
         
     | 
| 
       60 
78 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       61 
79 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       62 
     | 
    
         
            -
                    version: 2. 
     | 
| 
      
 80 
     | 
    
         
            +
                    version: '2.99'
         
     | 
| 
       63 
81 
     | 
    
         
             
              type: :development
         
     | 
| 
       64 
82 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       65 
83 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       66 
84 
     | 
    
         
             
                requirements:
         
     | 
| 
       67 
85 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       68 
86 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       69 
     | 
    
         
            -
                    version: 2. 
     | 
| 
      
 87 
     | 
    
         
            +
                    version: '2.99'
         
     | 
| 
       70 
88 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       71 
89 
     | 
    
         
             
              name: sqlite3-ruby
         
     | 
| 
       72 
90 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -109,6 +127,20 @@ dependencies: 
     | 
|
| 
       109 
127 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       110 
128 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       111 
129 
     | 
    
         
             
                    version: '10.0'
         
     | 
| 
      
 130 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 131 
     | 
    
         
            +
              name: appraisal
         
     | 
| 
      
 132 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 133 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 134 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 135 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 136 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
      
 137 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 138 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 139 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 140 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 141 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 142 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 143 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
       112 
144 
     | 
    
         
             
            description: Debug SQL statements in ActiveRecord by displaying warnings on bad queries.
         
     | 
| 
       113 
145 
     | 
    
         
             
            email:
         
     | 
| 
       114 
146 
     | 
    
         
             
            - mdobrota@tribpub.com
         
     | 
| 
         @@ -117,10 +149,15 @@ extensions: [] 
     | 
|
| 
       117 
149 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       118 
150 
     | 
    
         
             
            files:
         
     | 
| 
       119 
151 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
      
 152 
     | 
    
         
            +
            - Appraisals
         
     | 
| 
       120 
153 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       121 
154 
     | 
    
         
             
            - License.txt
         
     | 
| 
       122 
155 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
       123 
156 
     | 
    
         
             
            - Rakefile
         
     | 
| 
      
 157 
     | 
    
         
            +
            - gemfiles/rails_3.2.gemfile
         
     | 
| 
      
 158 
     | 
    
         
            +
            - gemfiles/rails_4.0.gemfile
         
     | 
| 
      
 159 
     | 
    
         
            +
            - gemfiles/rails_4.1.gemfile
         
     | 
| 
      
 160 
     | 
    
         
            +
            - gemfiles/rails_4.2.gemfile
         
     | 
| 
       124 
161 
     | 
    
         
             
            - lib/sql_safety_net.rb
         
     | 
| 
       125 
162 
     | 
    
         
             
            - lib/sql_safety_net/cache_store.rb
         
     | 
| 
       126 
163 
     | 
    
         
             
            - lib/sql_safety_net/configuration.rb
         
     |