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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 291725d79047d1a1f4c80c0656bc5bb2fea694fb
4
- data.tar.gz: 3c1b86850814c5b9b94c65be0e43948a3fc5e170
3
+ metadata.gz: 7c94a44b3723846b77896b44f234d32cc5d9816a
4
+ data.tar.gz: a45131e6c4ef28d65a419b33bdb3eccb41743dfb
5
5
  SHA512:
6
- metadata.gz: 75a01655c78712c1b25e8d6b6e49c303bc99d821b7cb52497b9aa4931678b3967202f0d69128c7cc549e254b3cbca6f751be5e187f52fe64b35ed6c4bd3dfbf8
7
- data.tar.gz: 7125283eb1c2ebae2c89a5d2a6a24bd92eff9f5c633921c52fa30de33bea0010d50bf94442e494677bda49541645b5e05c1e131abd242995bdee2fd49011fd6d
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::SequelTransaction,
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::SequelTransaction,
45
+ use Rack::Transaction,
30
46
  connection: Sequel.connect('sqlite:///')
31
47
  ```
32
48
 
@@ -1,5 +1,5 @@
1
1
  module Rack
2
- class SequelTransaction
2
+ class Transaction
3
3
  def initialize(inner, settings)
4
4
  @inner = inner
5
5
  @connection = settings.fetch(:connection)
@@ -1 +1 @@
1
- require 'sequel_transaction/rack/middleware'
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,3 +1,3 @@
1
1
  module SequelTransaction
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
  require 'sequel_transaction/rack'
3
3
 
4
- describe Rack::SequelTransaction do
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::SequelTransaction.new inner, connection: connection }
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
@@ -1,15 +1,12 @@
1
1
  require 'spec_helper'
2
2
  require 'sequel_transaction/sidekiq'
3
3
 
4
- describe Rack::SequelTransaction do
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::SequelTransaction.new connection: connection }
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 worker_class, msg, queue do
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 worker_class, msg, queue do
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.1.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-05-29 00:00:00.000000000 Z
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/middleware.rb
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/middleware_spec.rb
47
- - spec/sequel_transaction/sidekiq/middleware_spec.rb
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.0.3
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/middleware_spec.rb
74
- - spec/sequel_transaction/sidekiq/middleware_spec.rb
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