background_worker 0.2.0 → 0.2.1

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: 0e545bf8b33b749d412dcaabec85001174bc787a
4
- data.tar.gz: 85b78869946fa35bc82a64d321ee2d49c3497ef6
3
+ metadata.gz: adc5011226295995d19e4fac5920ec5507921e1b
4
+ data.tar.gz: 358a861e8f41d6a66ffdebf64d561521cf766608
5
5
  SHA512:
6
- metadata.gz: 230234c58f0cc42411c99e097832e509cd9085ac70f3170fc66e3f99f046793adfee09bfad01a1fb077ef0c0edac57d516cdbb7f213d6f80764bdd974eb706b3
7
- data.tar.gz: e619104b7a7e7824e067be824aa90db4aeb0fd726520dd3898bb179c9c670fb83ddfce726cce6d345191ad97adb964c200ff18b697457cb45292ae894d8f0d59
6
+ metadata.gz: 56cc930cc991e58352cda3fe9cf687d92dc7d5e1dcc3d8e5c6af088d6aab4b27d36bba7cca9efb7615a501cbf408a6db117ebc49de3d93ea7b2f2c0ffee89c4d
7
+ data.tar.gz: 8bf4c992d2233f2224c6a2a7595014f628ab9bea24c392bcb6d4207bfd801140ed42c9dd4947fa69c2196647e51d41448cfd6987b44f8081557bf27cd95f55a2
data/.travis.yml CHANGED
@@ -3,6 +3,13 @@ rvm:
3
3
  - 2.2.2
4
4
  - 2.3.0
5
5
  script: bundle exec rake spec
6
+ gemfile:
7
+ - gemfiles/rails3.gemfile
8
+ - gemfiles/rails4_0.gemfile
9
+ - gemfiles/rails4_1.gemfile
10
+ - gemfiles/rails4_2.gemfile
11
+ - gemfiles/rails5_0.gemfile
12
+ - gemfiles/rails5_1.gemfile
6
13
  notifications:
7
14
  email:
8
15
  - support@travellink.com.au
data/CHANGELOG.md CHANGED
@@ -5,6 +5,10 @@ This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## 0.2.1
9
+ ### Fixed
10
+ - [RU-123] Worker disconnecting within transactions in rails 4+
11
+
8
12
  ## 0.2.0
9
13
  ### Added
10
14
  - [RU-79] Release connections after execution for Rails 4
data/Rakefile CHANGED
@@ -1 +1,12 @@
1
- require 'bundler/gem_tasks'
1
+ require "bundler/gem_tasks"
2
+
3
+ desc 'Default: run specs.'
4
+ task :default => :spec
5
+
6
+ require 'rspec/core/rake_task'
7
+
8
+ desc "Run specs"
9
+ RSpec::Core::RakeTask.new do |t|
10
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
11
+ # Put spec opts in a file named .rspec in root
12
+ end
@@ -28,4 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'coveralls'
29
29
  spec.add_development_dependency 'simplecov-rcov'
30
30
  spec.add_development_dependency 'rubocop'
31
+
32
+ spec.add_development_dependency 'activerecord'
33
+ spec.add_development_dependency 'sqlite3'
31
34
  end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => '../'
3
+
4
+ group :development, :test do
5
+ gem 'activerecord', '~> 3.2.0'
6
+ end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => '../'
3
+
4
+ group :development, :test do
5
+ gem 'activerecord', '~> 4.0.0'
6
+ end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => '../'
3
+
4
+ group :development, :test do
5
+ gem 'activerecord', '~> 4.1.0'
6
+ end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => '../'
3
+
4
+ group :development, :test do
5
+ gem 'activerecord', '~> 4.2.0'
6
+ end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => '../'
3
+
4
+ group :development, :test do
5
+ gem 'activerecord', '~> 5.0.0'
6
+ end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+ gemspec :path => '../'
3
+
4
+ group :development, :test do
5
+ gem 'activerecord', '~> 5.1.0'
6
+ end
@@ -7,14 +7,12 @@ module BackgroundWorker
7
7
  attr_accessor :uid, :state
8
8
 
9
9
  def initialize(options = {})
10
- Time.zone = Setting.time_zone
11
-
12
10
  @uid = options[:uid]
13
11
 
14
12
  # Store state persistently, to enable status checkups & progress reporting
15
13
  @state = BackgroundWorker::PersistentState.new(@uid, options.except(:uid))
16
14
  log("Created #{self.class}")
17
- log("Options are: #{options.pretty_inspect}")
15
+ log("Options are: #{options.inspect}")
18
16
  end
19
17
 
20
18
  # Report progress...
@@ -79,13 +77,13 @@ module BackgroundWorker
79
77
  #
80
78
  # It will just call your preferred method in the worker.
81
79
  def perform(method_name, options = {})
82
- BackgroundWorker.verify_active_connections!
80
+ BackgroundWorker.verify_active_connections! if BackgroundWorker.config.backgrounded
83
81
 
84
82
  worker = new(options)
85
83
  execution = WorkerExecution.new(worker, method_name, options)
86
84
  execution.call
87
85
  ensure
88
- BackgroundWorker.release_connections!
86
+ BackgroundWorker.release_connections! if BackgroundWorker.config.backgrounded
89
87
  end
90
88
  end
91
89
  end
@@ -2,7 +2,7 @@ require 'logger'
2
2
 
3
3
  module BackgroundWorker
4
4
  class Config
5
- attr_reader :logger, :enqueue_with
5
+ attr_reader :logger, :enqueue_with, :backgrounded
6
6
 
7
7
  # Configuration includes following options:
8
8
  # logger: what logger to user throughout
@@ -19,6 +19,7 @@ module BackgroundWorker
19
19
  @logger = attrs.fetch(:logger, ::Logger.new(STDOUT))
20
20
  @enqueue_with = attrs.fetch(:enqueue_with, method(:foreground_enqueue))
21
21
  @after_exception = attrs.fetch(:after_exception, method(:default_after_exception))
22
+ @backgrounded = attrs.fetch(:backgrounded, true)
22
23
  end
23
24
 
24
25
  # Callback fired when an exception occurs
@@ -1,3 +1,3 @@
1
1
  module BackgroundWorker
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/spec/base_spec.rb ADDED
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ require 'active_support/core_ext/hash/keys' # Hash.symbolize_keys
4
+ require 'active_support/core_ext/numeric/time' # Numeric.hours
5
+
6
+ require 'active_record'
7
+
8
+ DB_FILE = 'tmp/test_db'
9
+ FileUtils.mkdir_p File.dirname(DB_FILE)
10
+ FileUtils.rm_f DB_FILE
11
+
12
+ ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => DB_FILE
13
+
14
+ load('spec/schema.rb')
15
+
16
+ describe BackgroundWorker::Base do
17
+ let(:cache) { double(write: nil, read: nil, reconnect: nil, store: nil) }
18
+ let(:model_class) { Model = Class.new(ActiveRecord::Base) }
19
+ let(:worker_class) {
20
+ Class.new(BackgroundWorker::Base) do
21
+ def store_in_cache(opts)
22
+ Rails.cache.store(opts[:value])
23
+ end
24
+ end
25
+ }
26
+
27
+ before do
28
+ stub_const 'Model', model_class
29
+ stub_const 'Rails', double(cache: cache, env: 'production')
30
+ BackgroundWorker.configure(backgrounded: false)
31
+ end
32
+
33
+ it 'should perform action and handle transactions/connections appropriately' do
34
+ Model.transaction do
35
+ worker_class.perform_in_background(:store_in_cache, value: 42)
36
+ end
37
+ expect(cache).to have_received(:store).with(42)
38
+ end
39
+ end
data/spec/schema.rb ADDED
@@ -0,0 +1,5 @@
1
+ ActiveRecord::Schema.define(:version => 1) do
2
+ create_table :models do |t|
3
+ t.string :name
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
1
  require 'simplecov-rcov'
2
2
  require 'coveralls'
3
3
  require 'coverage/kit'
4
- Coverage::Kit.setup(minimum_coverage: 47.5)
4
+ Coverage::Kit.setup(minimum_coverage: 82.1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: background_worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Noack
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-07-14 00:00:00.000000000 Z
13
+ date: 2017-09-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -124,6 +124,34 @@ dependencies:
124
124
  - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: activerecord
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: sqlite3
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
127
155
  description: See README for full details
128
156
  email:
129
157
  - development@travellink.com.au
@@ -142,6 +170,12 @@ files:
142
170
  - README.md
143
171
  - Rakefile
144
172
  - background_worker.gemspec
173
+ - gemfiles/rails3.gemfile
174
+ - gemfiles/rails4_0.gemfile
175
+ - gemfiles/rails4_1.gemfile
176
+ - gemfiles/rails4_2.gemfile
177
+ - gemfiles/rails5_0.gemfile
178
+ - gemfiles/rails5_1.gemfile
145
179
  - lib/background_worker.rb
146
180
  - lib/background_worker/base.rb
147
181
  - lib/background_worker/config.rb
@@ -149,6 +183,8 @@ files:
149
183
  - lib/background_worker/uid.rb
150
184
  - lib/background_worker/version.rb
151
185
  - lib/background_worker/worker_execution.rb
186
+ - spec/base_spec.rb
187
+ - spec/schema.rb
152
188
  - spec/spec_helper.rb
153
189
  - spec/support/coverage_loader.rb
154
190
  - spec/uid_spec.rb
@@ -177,6 +213,8 @@ signing_key:
177
213
  specification_version: 4
178
214
  summary: Background worker abstraction with status updates
179
215
  test_files:
216
+ - spec/base_spec.rb
217
+ - spec/schema.rb
180
218
  - spec/spec_helper.rb
181
219
  - spec/support/coverage_loader.rb
182
220
  - spec/uid_spec.rb