sequel_transaction 0.1.0 → 0.2.0
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/README.md +18 -2
- data/lib/sequel_transaction/rack/{middleware.rb → transaction.rb} +1 -1
- data/lib/sequel_transaction/rack.rb +1 -1
- data/lib/sequel_transaction/sidekiq/middleware/client/after_commit.rb +17 -0
- data/lib/sequel_transaction/sidekiq/middleware/server/transaction.rb +17 -0
- data/lib/sequel_transaction/sidekiq.rb +2 -1
- data/lib/sequel_transaction/version.rb +1 -1
- data/spec/sequel_transaction/rack/{middleware_spec.rb → transaction_spec.rb} +2 -2
- data/spec/sequel_transaction/sidekiq/middleware/client/after_commit_spec.rb +51 -0
- data/spec/sequel_transaction/sidekiq/{middleware_spec.rb → middleware/server/transaction_spec.rb} +4 -7
- metadata +17 -14
- data/lib/sequel_transaction/sidekiq/middleware.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c94a44b3723846b77896b44f234d32cc5d9816a
|
4
|
+
data.tar.gz: a45131e6c4ef28d65a419b33bdb3eccb41743dfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7113e0a3d63636afb275c31e81842a31b0ceeb2af90e565f607e37575cabdfa821dd8306f0b66e88daf45b4f7244c861f158ff5541b5ccf90427bd33333fb23
|
7
|
+
data.tar.gz: 1d17a95216fc70ff2aefe9cad6996c7272666c4779132415a1a6e5da8555f9bf8ac7c0a7a42c31d397fcd148f83e4de89f03d8ada1f12babef8b111f6228ee6f
|
data/README.md
CHANGED
@@ -14,10 +14,24 @@ Or install it yourself as:
|
|
14
14
|
|
15
15
|
## Sidekiq Wireup
|
16
16
|
|
17
|
+
To automatically wrap Sidekiq work processes in a transaction, add the following:
|
18
|
+
|
17
19
|
```ruby
|
18
20
|
Sidekiq.configure_server do |c|
|
19
21
|
c.server_middleware do |chain|
|
20
|
-
chain.add Sidekiq::Middleware::
|
22
|
+
chain.add Sidekiq::Middleware::Server::Transaction,
|
23
|
+
connection: Sequel.connect('sqlite:///')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
```
|
27
|
+
|
28
|
+
It may be useful to ensure the transaction has been committed before queuing up
|
29
|
+
work by adding the following:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
Sidekiq.configure_client do |c|
|
33
|
+
c.client_middleware do |chain|
|
34
|
+
chain.add Sidekiq::Middleware::Client::AfterCommit,
|
21
35
|
connection: Sequel.connect('sqlite:///')
|
22
36
|
end
|
23
37
|
end
|
@@ -25,8 +39,10 @@ end
|
|
25
39
|
|
26
40
|
## Rack Wireup
|
27
41
|
|
42
|
+
To automatically wrap requests in a transaction, add the following:
|
43
|
+
|
28
44
|
```ruby
|
29
|
-
use Rack::
|
45
|
+
use Rack::Transaction,
|
30
46
|
connection: Sequel.connect('sqlite:///')
|
31
47
|
```
|
32
48
|
|
@@ -1 +1 @@
|
|
1
|
-
require 'sequel_transaction/rack/
|
1
|
+
require 'sequel_transaction/rack/transaction'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sidekiq
|
2
|
+
module Middleware
|
3
|
+
module Client
|
4
|
+
class AfterCommit
|
5
|
+
def initialize(settings)
|
6
|
+
@connection = settings.fetch(:connection)
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(*args)
|
10
|
+
@connection.after_commit do
|
11
|
+
yield
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sidekiq
|
2
|
+
module Middleware
|
3
|
+
module Server
|
4
|
+
class Transaction
|
5
|
+
def initialize(settings)
|
6
|
+
@connection = settings.fetch(:connection)
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(*args)
|
10
|
+
@connection.transaction do
|
11
|
+
yield
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1 +1,2 @@
|
|
1
|
-
require 'sequel_transaction/sidekiq/middleware'
|
1
|
+
require 'sequel_transaction/sidekiq/middleware/client/after_commit'
|
2
|
+
require 'sequel_transaction/sidekiq/middleware/server/transaction'
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'sequel_transaction/rack'
|
3
3
|
|
4
|
-
describe Rack::
|
4
|
+
describe Rack::Transaction do
|
5
5
|
let(:inner) { mock }
|
6
6
|
let(:env) { { 'field' => 'variable' } }
|
7
7
|
let(:table_name) { :rack }
|
8
8
|
let(:dataset) { connection[table_name] }
|
9
9
|
let(:error) { RuntimeError.new }
|
10
10
|
|
11
|
-
subject { Rack::
|
11
|
+
subject { Rack::Transaction.new inner, connection: connection }
|
12
12
|
|
13
13
|
before do
|
14
14
|
connection.create_table table_name do
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'sequel_transaction/sidekiq'
|
3
|
+
|
4
|
+
describe Sidekiq::Middleware::Client::AfterCommit do
|
5
|
+
let(:table_name) { :sidekiq }
|
6
|
+
let(:dataset) { connection[table_name] }
|
7
|
+
let(:error) { RuntimeError.new }
|
8
|
+
|
9
|
+
subject { Sidekiq::Middleware::Client::AfterCommit.new connection: connection }
|
10
|
+
|
11
|
+
before do
|
12
|
+
connection.create_table table_name do
|
13
|
+
column :name, String, null: false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
after { connection.drop_table table_name }
|
18
|
+
|
19
|
+
it 'defers yield until after committing a transaction' do
|
20
|
+
called = false
|
21
|
+
connection.transaction do
|
22
|
+
subject.call do
|
23
|
+
called = true
|
24
|
+
end
|
25
|
+
called.must_equal false
|
26
|
+
end
|
27
|
+
called.must_equal true
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'yields immediately without transaction' do
|
31
|
+
called = false
|
32
|
+
subject.call do
|
33
|
+
called = true
|
34
|
+
end
|
35
|
+
called.must_equal true
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'does not yield after failing to commit transaction' do
|
39
|
+
called = false
|
40
|
+
begin
|
41
|
+
connection.transaction do
|
42
|
+
subject.call do
|
43
|
+
called = true
|
44
|
+
end
|
45
|
+
raise
|
46
|
+
end
|
47
|
+
rescue
|
48
|
+
end
|
49
|
+
called.must_equal false
|
50
|
+
end
|
51
|
+
end
|
data/spec/sequel_transaction/sidekiq/{middleware_spec.rb → middleware/server/transaction_spec.rb}
RENAMED
@@ -1,15 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'sequel_transaction/sidekiq'
|
3
3
|
|
4
|
-
describe
|
5
|
-
let(:worker_class) { mock }
|
6
|
-
let(:msg) { mock }
|
7
|
-
let(:queue) { mock }
|
4
|
+
describe Sidekiq::Middleware::Server::Transaction do
|
8
5
|
let(:table_name) { :sidekiq }
|
9
6
|
let(:dataset) { connection[table_name] }
|
10
7
|
let(:error) { RuntimeError.new }
|
11
8
|
|
12
|
-
subject { Sidekiq::Middleware::
|
9
|
+
subject { Sidekiq::Middleware::Server::Transaction.new connection: connection }
|
13
10
|
|
14
11
|
before do
|
15
12
|
connection.create_table table_name do
|
@@ -20,7 +17,7 @@ describe Rack::SequelTransaction do
|
|
20
17
|
after { connection.drop_table table_name }
|
21
18
|
|
22
19
|
it 'commits transaction' do
|
23
|
-
subject.call
|
20
|
+
subject.call do
|
24
21
|
dataset.insert name: 'first'
|
25
22
|
dataset.insert name: 'second'
|
26
23
|
end
|
@@ -30,7 +27,7 @@ describe Rack::SequelTransaction do
|
|
30
27
|
it 'rolls back transaction' do
|
31
28
|
actual_error = nil
|
32
29
|
begin
|
33
|
-
subject.call
|
30
|
+
subject.call do
|
34
31
|
dataset.insert name: 'first'
|
35
32
|
raise error
|
36
33
|
end
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel_transaction
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vyrak.bunleang@gmail.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 4.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 4.0.0
|
27
27
|
description: Middlewares for Sequel transactions
|
@@ -30,7 +30,7 @@ executables: []
|
|
30
30
|
extensions: []
|
31
31
|
extra_rdoc_files: []
|
32
32
|
files:
|
33
|
-
- .gitignore
|
33
|
+
- ".gitignore"
|
34
34
|
- Gemfile
|
35
35
|
- Guardfile
|
36
36
|
- LICENSE
|
@@ -38,13 +38,15 @@ files:
|
|
38
38
|
- Rakefile
|
39
39
|
- lib/sequel_transaction.rb
|
40
40
|
- lib/sequel_transaction/rack.rb
|
41
|
-
- lib/sequel_transaction/rack/
|
41
|
+
- lib/sequel_transaction/rack/transaction.rb
|
42
42
|
- lib/sequel_transaction/sidekiq.rb
|
43
|
-
- lib/sequel_transaction/sidekiq/middleware.rb
|
43
|
+
- lib/sequel_transaction/sidekiq/middleware/client/after_commit.rb
|
44
|
+
- lib/sequel_transaction/sidekiq/middleware/server/transaction.rb
|
44
45
|
- lib/sequel_transaction/version.rb
|
45
46
|
- sequel_transaction.gemspec
|
46
|
-
- spec/sequel_transaction/rack/
|
47
|
-
- spec/sequel_transaction/sidekiq/
|
47
|
+
- spec/sequel_transaction/rack/transaction_spec.rb
|
48
|
+
- spec/sequel_transaction/sidekiq/middleware/client/after_commit_spec.rb
|
49
|
+
- spec/sequel_transaction/sidekiq/middleware/server/transaction_spec.rb
|
48
50
|
- spec/spec_helper.rb
|
49
51
|
homepage:
|
50
52
|
licenses: []
|
@@ -55,21 +57,22 @@ require_paths:
|
|
55
57
|
- lib
|
56
58
|
required_ruby_version: !ruby/object:Gem::Requirement
|
57
59
|
requirements:
|
58
|
-
- -
|
60
|
+
- - ">="
|
59
61
|
- !ruby/object:Gem::Version
|
60
62
|
version: '0'
|
61
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
64
|
requirements:
|
63
|
-
- -
|
65
|
+
- - ">="
|
64
66
|
- !ruby/object:Gem::Version
|
65
67
|
version: '0'
|
66
68
|
requirements: []
|
67
69
|
rubyforge_project:
|
68
|
-
rubygems_version: 2.
|
70
|
+
rubygems_version: 2.2.2
|
69
71
|
signing_key:
|
70
72
|
specification_version: 4
|
71
73
|
summary: Middlewares for Sequel transactions
|
72
74
|
test_files:
|
73
|
-
- spec/sequel_transaction/rack/
|
74
|
-
- spec/sequel_transaction/sidekiq/
|
75
|
+
- spec/sequel_transaction/rack/transaction_spec.rb
|
76
|
+
- spec/sequel_transaction/sidekiq/middleware/client/after_commit_spec.rb
|
77
|
+
- spec/sequel_transaction/sidekiq/middleware/server/transaction_spec.rb
|
75
78
|
- spec/spec_helper.rb
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Sidekiq
|
2
|
-
module Middleware
|
3
|
-
class SequelTransaction
|
4
|
-
def initialize(settings)
|
5
|
-
@connection = settings.fetch(:connection)
|
6
|
-
end
|
7
|
-
|
8
|
-
def call(worker_class, message, queue)
|
9
|
-
@connection.transaction do
|
10
|
-
yield
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|