activerecord-pedantmysql2-adapter 0.0.3 → 0.1.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: df26d0bd1e7762f5394a6bbb0268f3c450c3802e
4
- data.tar.gz: 0b3b997d9687a4bbad0b0b672e06406a6902c63e
3
+ metadata.gz: 9d97c6c15fa963892eb43e540db0991eb1faa0f4
4
+ data.tar.gz: 126aac6ba50510b2b98019e78ab7a2a7d0b4b1a6
5
5
  SHA512:
6
- metadata.gz: ce22c43b5e38358782c96c0ae9989b07e20e395a1d821c7605a374cb9d507c8c136d085b00debb66080e7a18b6697ead0513125b8c16212681ae5b7de434b205
7
- data.tar.gz: 90c27520d20f79dc3b1a7ec97fce529fe85915414ebe14c823064edf040140340662e10b8e6507c7bed4780427b52afe11f520c97cd2a3ac14922e49fd4e0be8
6
+ metadata.gz: 94478f4e513f574c69832141987a3c78131a93e20d076aa8cadf78affc2dd17ef237e9dba84a2fc854f8aac24177299d1859182dc99cc3f9a3c9ee3f6a70bb38
7
+ data.tar.gz: 30a1e65591898dc7dd60352e603386db1a3f16ecbc4b35fbff7fcaa7321cf29a915b61e630264d45c0bfd39e55695bfda1699845a074b732764629dcc821859d
data/README.md CHANGED
@@ -55,6 +55,39 @@ end
55
55
 
56
56
  ```
57
57
 
58
+ If you want to be able to have some queries react silently to MySQL warnings you can
59
+ do the following:
60
+
61
+ ```ruby
62
+
63
+ PedantMysql2.on_warning = lambda do |warning|
64
+ if PedantMysql2.silence_warnings?
65
+ # handle the warning a certain way or return
66
+ else
67
+ # simply pass the warning to the caller
68
+ raise warning
69
+ end
70
+ end
71
+
72
+ PedantMysql2.silence_warnings do
73
+ # perform query that may raise an error you want to stifle
74
+ end
75
+ ```
76
+
77
+ ## Development
78
+
79
+ Setting up the development environment is very straightforward. In order to keep the test
80
+ as simple as possible we rely on your MySQL database to have a `travis` user and a
81
+ `pedant_mysql2_test` database.
82
+
83
+ You can set this up easily using the following commands as your `root` MySQL user:
84
+
85
+ ```
86
+ CREATE USER 'travis'@'localhost';
87
+ CREATE DATABASE pedant_mysql2_test;
88
+ GRANT ALL PRIVILEGES ON pedant_mysql2_test.* TO 'travis'@'localhost';
89
+ ```
90
+
58
91
  ## Contributing
59
92
 
60
93
  1. Fork it ( http://github.com/Shopify/activerecord-pedantmysql2-adapter/fork )
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'mysql2', '>= 0.3.11'
23
23
  spec.add_development_dependency 'bundler', '~> 1.5'
24
24
  spec.add_development_dependency 'rake'
25
- spec.add_development_dependency 'rspec'
25
+ spec.add_development_dependency 'rspec', '>= 3.0'
26
+ spec.add_development_dependency 'rspec-its'
26
27
  spec.add_development_dependency 'coveralls'
27
28
  end
data/lib/pedant_mysql2.rb CHANGED
@@ -1,6 +1,19 @@
1
1
  module PedantMysql2
2
2
  class << self
3
3
  attr_accessor :on_warning
4
+
5
+ def silence_warnings
6
+ previous_value = Thread.current[:silence_warnings]
7
+ Thread.current[:silence_warnings] = true
8
+ yield
9
+ ensure
10
+ Thread.current[:silence_warnings] = previous_value
11
+ end
12
+
13
+ def silence_warnings?
14
+ Thread.current[:silence_warnings]
15
+ end
16
+
4
17
  end
5
18
  self.on_warning = lambda{ |*| }
6
19
  end
@@ -1,3 +1,3 @@
1
1
  module PedantMysql2
2
- VERSION = '0.0.3'
2
+ VERSION = '0.1.0'
3
3
  end
data/spec/adapter_spec.rb CHANGED
@@ -43,6 +43,27 @@ describe PedantMysql2 do
43
43
  }.to raise_error(MysqlWarning)
44
44
  end
45
45
 
46
+ it 'can allow blocks of queries to be silenced' do
47
+ PedantMysql2.on_warning = lambda do |warning|
48
+ raise warning unless PedantMysql2.silence_warnings?
49
+ end
50
+ expect {
51
+ PedantMysql2.silence_warnings do
52
+ expect(PedantMysql2.silence_warnings?).to be true
53
+ connection.execute('SELECT 1 + "foo"')
54
+ end
55
+ }.to_not raise_error
56
+ end
57
+
58
+ it 'restores the old value that was stored in the thread_local silence_warnings' do
59
+ Thread.current[:silence_warnings] = 'abracadabra'
60
+ PedantMysql2.silence_warnings do
61
+ expect(Thread.current[:silence_warnings]).to be true
62
+ connection.execute('SELECT 1 + "foo"')
63
+ end
64
+ expect(Thread.current[:silence_warnings]).to be == 'abracadabra'
65
+ end
66
+
46
67
  describe MysqlWarning do
47
68
 
48
69
  subject do
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  lib = File.expand_path('../lib', __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
+ require 'rspec/its'
4
5
  require 'simplecov'
5
6
  require 'coveralls'
6
7
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-pedantmysql2-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2014-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -68,6 +68,20 @@ dependencies:
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-its
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="