background_worker 0.0.5 → 0.4.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
- SHA1:
3
- metadata.gz: fcc18679c11c98ef7f0da1d7d5112004edd1bfb4
4
- data.tar.gz: 3d4cacb66997222274d85dde11e5787c3fad9ffb
2
+ SHA256:
3
+ metadata.gz: 6e2f1d5ad9dc6f2f79dfcd55838f8b7d9ded9c7518fc77f90ecea89fe537539c
4
+ data.tar.gz: 1e05a4e548ebdfea30e6bcf9ecc20dd7aaa3edc75966a2433f1f8ca016eb879c
5
5
  SHA512:
6
- metadata.gz: 37680e16cc121d912e38df598045df83c3e8e3fce5dedb168830932ac1e126d3de8fbfdb34860f0806c4999f26f4a891a7589310adfb323a7810aa4e4cab5553
7
- data.tar.gz: 4002280277529ea9af57c9714d19f1649a920719501e06eb1c9c63c521a295ce4acbb980dc652509f7cd9b10d7257e4725cba829bbb484275c8b17a6eb526967
6
+ metadata.gz: c98bc9599be6db3a4a5f5dd6b8dc699a9209dcf6889553ae786ee7c780198d4af3c37198fdf486477f5a150288c1ab818632eeefb655bf7453c5372806ba4871
7
+ data.tar.gz: 19d317689204f81a81f782c6a8697087c13d5616341abd6258a0284249804fd216c389cf07e738993b522ec1346c517224a040531a574428233e0170502eb506
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_PATH: "vendor"
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "bundler"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "daily"
@@ -0,0 +1,59 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build:
10
+ name: Build
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout
14
+ uses: actions/checkout@v2
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ bundler-cache: true
18
+ - run: bundle exec rake
19
+
20
+ release:
21
+ needs: build
22
+ name: Release
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - name: Checkout
26
+ uses: actions/checkout@v2
27
+
28
+ - name: Generate Changelog
29
+ run: |
30
+ # Get version from github ref (remove 'refs/tags/' and prefix 'v')
31
+ version="${GITHUB_REF#refs/tags/v}"
32
+ npx changelog-parser CHANGELOG.md | jq -cr ".versions | .[] | select(.version == \"$version\") | .body" > ${{ github.workflow }}-CHANGELOG.txt
33
+
34
+ - name: Release
35
+ uses: softprops/action-gh-release@v1
36
+ with:
37
+ body_path: ${{ github.workflow }}-CHANGELOG.txt
38
+ env:
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+
41
+ publish:
42
+ needs: [build, release]
43
+ name: Publish
44
+ runs-on: ubuntu-latest
45
+
46
+ steps:
47
+ - uses: actions/checkout@v2
48
+ - uses: ruby/setup-ruby@v1
49
+
50
+ - name: Publish to RubyGems
51
+ run: |
52
+ mkdir -p $HOME/.gem
53
+ touch $HOME/.gem/credentials
54
+ chmod 0600 $HOME/.gem/credentials
55
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
56
+ gem build *.gemspec
57
+ gem push *.gem
58
+ env:
59
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,19 @@
1
+ name: Build and Test
2
+ on: [push, pull_request]
3
+ jobs:
4
+ test:
5
+ strategy:
6
+ fail-fast: false
7
+ matrix:
8
+ gemfile: [rails60, rails61]
9
+ ruby: ["2.6", "2.7", "3.0"]
10
+ runs-on: ubuntu-latest
11
+ env:
12
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: ${{ matrix.ruby }}
18
+ bundler-cache: true
19
+ - run: bundle exec rake
@@ -0,0 +1,4 @@
1
+ Gemfile.lock
2
+ coverage
3
+ vendor
4
+ tmp
@@ -0,0 +1 @@
1
+ 3.0.0
@@ -0,0 +1,25 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This project adheres to [Semantic Versioning](http://semver.org/).
4
+ This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
5
+
6
+ ## 0.4.0
7
+
8
+ - [TT-8623] Update to build with github actions / ruby 3.0 / rails 6.1
9
+
10
+ ## 0.3.0
11
+
12
+ - [TT-6292] Support Rails 5.2 built-in redis cache, remove legacy supports
13
+
14
+ ## 0.2.1
15
+ ### Fixed
16
+ - [RU-123] Worker disconnecting within transactions in rails 4+
17
+
18
+ ## 0.2.0
19
+ ### Added
20
+ - [RU-79] Release connections after execution for Rails 4
21
+
22
+ ## 0.1.0
23
+ ### Added
24
+ - [TT-1392] Changelog file
25
+ - [TT-2141] Only verify connections for Rails 3
data/README.md CHANGED
@@ -1,10 +1,13 @@
1
- Background Worker
2
- =================
1
+ # Background Worker
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/background_worker.svg)](http://badge.fury.io/rb/background_worker)
4
+ [![Build Status](https://github.com/sealink/background_worker/workflows/Build%20and%20Test/badge.svg?branch=master)](https://github.com/sealink/background_worker/actions)
3
5
 
4
6
  Provides a worker abstraction with an additional status channel.
5
7
 
6
8
  Start by making a worker class which extends from BackgroundWorker::Base
7
9
 
10
+ ```ruby
8
11
  class MyWorker < BackgroundWorker::Base
9
12
  def my_task(options={})
10
13
  report_progress('Starting')
@@ -17,48 +20,69 @@ Start by making a worker class which extends from BackgroundWorker::Base
17
20
  {original_message: message}
18
21
  end
19
22
  end
23
+ ```
20
24
 
21
25
  Then, when you want to perform a task in the background, use
22
26
  klass#perform_in_background which exists in Base:
23
27
 
24
- worker_id = MyWorker.perform_in_background(:my_task, message: "hello!")
28
+ ```ruby
29
+ worker_id = MyWorker.perform_in_background(:my_task, message: "hello!")
30
+ ```
25
31
 
26
32
  # Backgrounded
27
33
 
28
34
  By default this will call your instance method in the foreground -- you have to
29
35
  provide an #enqueue_with configuration like so:
30
36
 
37
+ ```ruby
31
38
  BackgroundWorker.configure(
32
39
  enqueue_with: -> klass, method_name, options {
33
40
  Resque.enqueue(klass, method_name, options)
34
41
  }
35
42
  )
43
+ ```
36
44
 
37
45
  This is independent of the status reporting which (currently) always uses Redis.
38
46
 
39
47
  # Getting the status
40
48
 
41
- The worker_id you are returned can be used to get the status, and
42
- whether the worker has finished successfully, failed, or in progress:
49
+ The worker_id you are returned can be used to get the status and
50
+ whether the worker has finished successfully, failed, or is still in progress:
43
51
 
52
+ ```ruby
44
53
  state = BackgroundWorker.get_state_of(worker_id)
54
+ ```
45
55
 
46
56
  The state is represented by a hash with the following keys:
47
57
 
48
- message: Reported message
49
- detailed_message: Detailed version of above when provided
50
- status: :successful, :failed, or null if still processing
51
- completed: True if report_failed, report_successful called (or worker
52
- finished without exception -- which calls report_successful)
53
- data: Arbitrary data returned by worker method on success or report_failed
58
+ | key | description |
59
+ | ------------------------------------------------------------ | -------------------------------------------------------------------- |
60
+ | message | Reported message |
61
+ | detailed_message | Detailed version of above when provided |
62
+ | status | :successful, :failed, or null if still processing |
63
+ | completed | True if report_failed, report_successful called (or worker |
64
+ | finished without exception -- which calls report_successful) |
65
+ | data | Arbitrary data returned by worker method on success or report_failed |
54
66
 
55
67
  If an exception is raised, the worker will call #report_failed with the
56
- details. You can provide a callback with #after_exception in the config
68
+ details. You can provide a callback with #after_exception in the config.
69
+
70
+ # Installation
71
+
72
+ Add to your Gemfile:
57
73
 
58
- # INSTALLATION
74
+ ```ruby
75
+ gem 'background_worker'
76
+ ```
59
77
 
60
- gem install background_worker
78
+ # Release
61
79
 
62
- or add to your Gemfile:
63
- gem 'background_worker'
80
+ To publish a new version of this gem the following steps must be taken.
64
81
 
82
+ - Update the version in the following files
83
+ ```
84
+ CHANGELOG.md
85
+ lib/background_worker/version.rb
86
+ ```
87
+ - Create a tag using the format v0.1.0
88
+ - Follow build progress in GitHub actions
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
@@ -19,8 +19,17 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
20
20
  spec.test_files = spec.files.grep(/^(test|spec|features)\//)
21
21
  spec.require_paths = ['lib']
22
+ spec.required_ruby_version = '>= 2.6'
22
23
 
24
+ spec.add_development_dependency 'activesupport'
23
25
  spec.add_development_dependency 'bundler'
24
26
  spec.add_development_dependency 'rake'
27
+ spec.add_development_dependency 'rspec'
28
+ spec.add_development_dependency 'coverage-kit'
29
+ spec.add_development_dependency 'coveralls'
30
+ spec.add_development_dependency 'simplecov-rcov'
25
31
  spec.add_development_dependency 'rubocop'
32
+
33
+ spec.add_development_dependency 'activerecord'
34
+ spec.add_development_dependency 'sqlite3'
26
35
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ gemspec path: '../'
5
+
6
+ group :development, :test do
7
+ gem 'activerecord', '~> 6.0'
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ gemspec path: '../'
5
+
6
+ group :development, :test do
7
+ gem 'activerecord', '~> 6.1'
8
+ end
@@ -24,8 +24,14 @@ module BackgroundWorker
24
24
  end
25
25
 
26
26
  def self.verify_active_connections!
27
- Rails.cache.reconnect if defined?(Rails)
28
- ActiveRecord::Base.verify_active_connections! if defined?(ActiveRecord)
27
+ if defined?(Rails)
28
+ Rails.cache.reconnect if Rails.cache.respond_to?(:reconnect)
29
+ Rails.cache.redis.close if Rails.cache.respond_to?(:redis)
30
+ end
31
+ end
32
+
33
+ def self.release_connections!
34
+ ActiveRecord::Base.clear_all_connections!
29
35
  end
30
36
 
31
37
  def self.after_exception(e)
@@ -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,11 +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
85
+ ensure
86
+ BackgroundWorker.release_connections! if BackgroundWorker.config.backgrounded
87
87
  end
88
88
  end
89
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.0.5'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -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
@@ -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
@@ -0,0 +1,14 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'rubygems'
9
+ require 'bundler/setup'
10
+ require 'active_support/core_ext/string/inflections' #underscore
11
+
12
+ require 'support/coverage_loader'
13
+
14
+ require 'background_worker'
@@ -0,0 +1,4 @@
1
+ require 'simplecov-rcov'
2
+ require 'coveralls'
3
+ require 'coverage/kit'
4
+ Coverage::Kit.setup(minimum_coverage: 82.75)
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe BackgroundWorker::Uid do
4
+ let(:class_name) { 'CopyWorker' }
5
+ let(:method) { 'make_copy' }
6
+ let(:uid_object) { BackgroundWorker::Uid.new(class_name, method) }
7
+
8
+ context '#generate' do
9
+ subject(:uid) { uid_object.generate }
10
+ it { is_expected.to match(/copy_worker:make_copy:[0-9a-f]{16}/) }
11
+ end
12
+ end
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.0.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Noack
@@ -10,8 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-05-08 00:00:00.000000000 Z
13
+ date: 2021-01-06 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
15
29
  - !ruby/object:Gem::Dependency
16
30
  name: bundler
17
31
  requirement: !ruby/object:Gem::Requirement
@@ -40,6 +54,62 @@ dependencies:
40
54
  - - ">="
41
55
  - !ruby/object:Gem::Version
42
56
  version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rspec
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: coverage-kit
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: coveralls
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: simplecov-rcov
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
43
113
  - !ruby/object:Gem::Dependency
44
114
  name: rubocop
45
115
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +124,34 @@ dependencies:
54
124
  - - ">="
55
125
  - !ruby/object:Gem::Version
56
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'
57
155
  description: See README for full details
58
156
  email:
59
157
  - development@travellink.com.au
@@ -63,12 +161,21 @@ executables: []
63
161
  extensions: []
64
162
  extra_rdoc_files: []
65
163
  files:
164
+ - ".bundle/config"
165
+ - ".github/dependabot.yml"
166
+ - ".github/workflows/release.yml"
167
+ - ".github/workflows/ruby.yml"
168
+ - ".gitignore"
66
169
  - ".rubocop.yml"
170
+ - ".ruby-version"
171
+ - CHANGELOG.md
67
172
  - Gemfile
68
173
  - LICENSE.txt
69
174
  - README.md
70
175
  - Rakefile
71
176
  - background_worker.gemspec
177
+ - gemfiles/rails60.gemfile
178
+ - gemfiles/rails61.gemfile
72
179
  - lib/background_worker.rb
73
180
  - lib/background_worker/base.rb
74
181
  - lib/background_worker/config.rb
@@ -76,6 +183,11 @@ files:
76
183
  - lib/background_worker/uid.rb
77
184
  - lib/background_worker/version.rb
78
185
  - lib/background_worker/worker_execution.rb
186
+ - spec/base_spec.rb
187
+ - spec/schema.rb
188
+ - spec/spec_helper.rb
189
+ - spec/support/coverage_loader.rb
190
+ - spec/uid_spec.rb
79
191
  homepage: http://github.com/sealink/background_worker
80
192
  licenses:
81
193
  - MIT
@@ -88,16 +200,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
200
  requirements:
89
201
  - - ">="
90
202
  - !ruby/object:Gem::Version
91
- version: '0'
203
+ version: '2.6'
92
204
  required_rubygems_version: !ruby/object:Gem::Requirement
93
205
  requirements:
94
206
  - - ">="
95
207
  - !ruby/object:Gem::Version
96
208
  version: '0'
97
209
  requirements: []
98
- rubyforge_project:
99
- rubygems_version: 2.4.5
210
+ rubygems_version: 3.2.3
100
211
  signing_key:
101
212
  specification_version: 4
102
213
  summary: Background worker abstraction with status updates
103
- test_files: []
214
+ test_files:
215
+ - spec/base_spec.rb
216
+ - spec/schema.rb
217
+ - spec/spec_helper.rb
218
+ - spec/support/coverage_loader.rb
219
+ - spec/uid_spec.rb