sidekiq-unique-jobs 5.0.11 → 6.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq-unique-jobs might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.codeclimate.yml +17 -9
- data/.gitignore +1 -3
- data/.reek +105 -0
- data/.rubocop.yml +36 -1
- data/.simplecov +7 -2
- data/.travis.yml +11 -10
- data/Appraisals +3 -7
- data/CHANGELOG.md +17 -0
- data/Gemfile +16 -13
- data/Guardfile +55 -0
- data/README.md +85 -73
- data/examples/another_unique_job.rb +13 -0
- data/examples/custom_queue_job.rb +12 -0
- data/examples/custom_queue_job_with_filter_method.rb +13 -0
- data/examples/custom_queue_job_with_filter_proc.rb +16 -0
- data/examples/expiring_job.rb +12 -0
- data/examples/inline_worker.rb +12 -0
- data/examples/just_a_worker.rb +13 -0
- data/examples/long_running_job.rb +12 -0
- data/examples/main_job.rb +13 -0
- data/examples/my_job.rb +12 -0
- data/examples/my_unique_job.rb +16 -0
- data/examples/my_unique_job_with_filter_method.rb +21 -0
- data/examples/my_unique_job_with_filter_proc.rb +19 -0
- data/examples/notify_worker.rb +14 -0
- data/examples/plain_class.rb +13 -0
- data/examples/simple_worker.rb +15 -0
- data/examples/spawn_simple_worker.rb +12 -0
- data/examples/test_class.rb +9 -0
- data/examples/unique_across_workers_job.rb +20 -0
- data/examples/unique_job_with_conditional_parameter.rb +18 -0
- data/examples/unique_job_with_filter_method.rb +18 -0
- data/examples/unique_job_with_nil_unique_args.rb +20 -0
- data/examples/unique_job_with_no_unique_args_method.rb +16 -0
- data/examples/unique_job_withthout_unique_args_parameter.rb +18 -0
- data/examples/unique_on_all_queues_job.rb +16 -0
- data/examples/until_and_while_executing_job.rb +13 -0
- data/examples/until_executed_2_job.rb +24 -0
- data/examples/until_executed_job.rb +25 -0
- data/examples/until_executing_job.rb +11 -0
- data/examples/until_expired_job.rb +12 -0
- data/examples/until_global_expired_job.rb +12 -0
- data/examples/while_executing_job.rb +15 -0
- data/examples/while_executing_reject_job.rb +14 -0
- data/examples/without_argument_job.rb +13 -0
- data/lib/sidekiq-unique-jobs.rb +1 -91
- data/lib/sidekiq/simulator.rb +15 -16
- data/lib/sidekiq_unique_jobs.rb +79 -0
- data/lib/sidekiq_unique_jobs/cli.rb +9 -18
- data/lib/sidekiq_unique_jobs/client/middleware.rb +16 -18
- data/lib/sidekiq_unique_jobs/connection.rb +18 -0
- data/lib/sidekiq_unique_jobs/constants.rb +13 -17
- data/lib/sidekiq_unique_jobs/core_ext.rb +28 -55
- data/lib/sidekiq_unique_jobs/exceptions.rb +30 -0
- data/lib/sidekiq_unique_jobs/lock/base_lock.rb +84 -0
- data/lib/sidekiq_unique_jobs/lock/until_and_while_executing.rb +11 -6
- data/lib/sidekiq_unique_jobs/lock/until_executed.rb +6 -58
- data/lib/sidekiq_unique_jobs/lock/until_executing.rb +6 -5
- data/lib/sidekiq_unique_jobs/lock/until_expired.rb +17 -0
- data/lib/sidekiq_unique_jobs/lock/while_executing.rb +20 -34
- data/lib/sidekiq_unique_jobs/lock/while_executing_reject.rb +78 -0
- data/lib/sidekiq_unique_jobs/lock/while_executing_requeue.rb +20 -0
- data/lib/sidekiq_unique_jobs/locksmith.rb +149 -0
- data/lib/sidekiq_unique_jobs/logging.rb +30 -0
- data/lib/sidekiq_unique_jobs/options_with_fallback.rb +27 -41
- data/lib/sidekiq_unique_jobs/scripts.rb +25 -24
- data/lib/sidekiq_unique_jobs/server/middleware.rb +12 -20
- data/lib/sidekiq_unique_jobs/sidekiq_unique_ext.rb +5 -5
- data/lib/sidekiq_unique_jobs/sidekiq_worker_methods.rb +42 -0
- data/lib/sidekiq_unique_jobs/testing.rb +40 -50
- data/lib/sidekiq_unique_jobs/timeout.rb +15 -0
- data/lib/sidekiq_unique_jobs/timeout/calculator.rb +49 -0
- data/lib/sidekiq_unique_jobs/unique_args.rb +33 -77
- data/lib/sidekiq_unique_jobs/unlockable.rb +5 -14
- data/lib/sidekiq_unique_jobs/util.rb +28 -90
- data/lib/sidekiq_unique_jobs/version.rb +1 -1
- data/redis/acquire_lock.lua +5 -3
- data/redis/create.lua +58 -0
- data/redis/delete.lua +11 -0
- data/redis/release_stale_locks.lua +90 -0
- data/redis/signal.lua +21 -0
- data/sidekiq-unique-jobs.gemspec +15 -8
- metadata +108 -32
- data/lib/sidekiq_unique_jobs/config.rb +0 -17
- data/lib/sidekiq_unique_jobs/lock.rb +0 -12
- data/lib/sidekiq_unique_jobs/lock/until_timeout.rb +0 -17
- data/lib/sidekiq_unique_jobs/run_lock_failed.rb +0 -3
- data/lib/sidekiq_unique_jobs/script_mock.rb +0 -66
- data/lib/sidekiq_unique_jobs/scripts/acquire_lock.rb +0 -47
- data/lib/sidekiq_unique_jobs/scripts/release_lock.rb +0 -49
- data/lib/sidekiq_unique_jobs/testing/sidekiq_overrides.rb +0 -50
- data/lib/sidekiq_unique_jobs/timeout_calculator.rb +0 -67
- data/redis/synchronize.lua +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2df5975505fc4b3764d2cdd9dd64ecc9f3be6c553d88c3a15c7c5393acc6c4a0
|
4
|
+
data.tar.gz: ad888ea1fc3c717c91975b79f5105d186384b21b534e96ce2a13b474e0b5201b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7161efd989f5c27e95a9a3f0b7943b245ed4448e7584f568210ed81fc0ef2f816750c34336e38e612c73486d6749935907c3ff3931c2530f871e0b406339e36
|
7
|
+
data.tar.gz: 17d7880b7856baee9e474b68c57edab8966e7f16599b0c08250949996d46ef5f22e665a32e625f3b69be03687beb1f63f30ee24662e9f26b9e43904e7a6e23fd
|
data/.codeclimate.yml
CHANGED
@@ -1,22 +1,30 @@
|
|
1
1
|
---
|
2
|
-
|
2
|
+
version: '2'
|
3
|
+
plugins:
|
3
4
|
bundler-audit:
|
4
5
|
enabled: false
|
5
|
-
fixme:
|
6
|
-
enabled: true
|
7
6
|
duplication:
|
8
7
|
enabled: true
|
9
8
|
config:
|
10
9
|
languages:
|
11
10
|
- ruby
|
11
|
+
# editorconfig:
|
12
|
+
# enabled: true
|
13
|
+
# channel: beta
|
14
|
+
# config:
|
15
|
+
# editorconfig: .editorconfig
|
16
|
+
flog:
|
17
|
+
enabled: true
|
18
|
+
fixme:
|
19
|
+
enabled: true
|
20
|
+
markdownlint:
|
21
|
+
enabled: true
|
22
|
+
reek:
|
23
|
+
enabled: true
|
12
24
|
rubocop:
|
13
25
|
enabled: true
|
14
|
-
|
15
|
-
|
16
|
-
- lib/**
|
17
|
-
- bin/**
|
18
|
-
- "**.rb"
|
19
|
-
exclude_paths:
|
26
|
+
channel: rubocop-0-54
|
27
|
+
exclude_patterns:
|
20
28
|
- Gemfile
|
21
29
|
- "*.gemspec"
|
22
30
|
- Appraisals
|
data/.gitignore
CHANGED
data/.reek
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
---
|
2
|
+
exclude_paths:
|
3
|
+
- rails_example
|
4
|
+
- redis
|
5
|
+
- spec
|
6
|
+
- tmp
|
7
|
+
- gemfiles
|
8
|
+
- examples
|
9
|
+
DuplicateMethodCall:
|
10
|
+
exclude:
|
11
|
+
- Sidekiq#self.use_options
|
12
|
+
IrresponsibleModule:
|
13
|
+
exclude:
|
14
|
+
- Sidekiq::Simulator
|
15
|
+
- SidekiqUniqueJobs::Cli
|
16
|
+
- SidekiqUniqueJobs::Client::Middleware
|
17
|
+
- SidekiqUniqueJobs
|
18
|
+
- Array
|
19
|
+
- Hash
|
20
|
+
- SidekiqUniqueJobs::JidMissing
|
21
|
+
- SidekiqUniqueJobs::LockTimeout
|
22
|
+
- SidekiqUniqueJobs::MaxLockTimeMissing
|
23
|
+
- SidekiqUniqueJobs::RunLockFailed
|
24
|
+
- SidekiqUniqueJobs::ScriptError
|
25
|
+
- SidekiqUniqueJobs::UnexpectedValue
|
26
|
+
- SidekiqUniqueJobs::UniqueKeyMissing
|
27
|
+
- SidekiqUniqueJobs::UnknownLock
|
28
|
+
- SidekiqUniqueJobs::Lock::BaseLock
|
29
|
+
- SidekiqUniqueJobs::Lock::UntilAndWhileExecuting
|
30
|
+
- SidekiqUniqueJobs::Lock::UntilExecuted
|
31
|
+
- SidekiqUniqueJobs::Lock::UntilExecuting
|
32
|
+
- SidekiqUniqueJobs::Lock::UntilExpired
|
33
|
+
- SidekiqUniqueJobs::Lock::WhileExecuting
|
34
|
+
- SidekiqUniqueJobs::Lock::WhileExecutingReject
|
35
|
+
- SidekiqUniqueJobs::Lock::WhileExecutingRequeue
|
36
|
+
- SidekiqUniqueJobs::Locksmith
|
37
|
+
- SidekiqUniqueJobs::Middleware
|
38
|
+
- SidekiqUniqueJobs::Normalizer
|
39
|
+
- SidekiqUniqueJobs::Scripts
|
40
|
+
- SidekiqUniqueJobs::Server::Middleware
|
41
|
+
- Sidekiq::Job
|
42
|
+
- Sidekiq::Job::UniqueExtension
|
43
|
+
- Sidekiq::JobSet
|
44
|
+
- Sidekiq::JobSet::UniqueExtension
|
45
|
+
- Sidekiq::Queue
|
46
|
+
- Sidekiq::Queue::UniqueExtension
|
47
|
+
- Sidekiq::ScheduledSet
|
48
|
+
- Sidekiq::ScheduledSet::UniqueExtension
|
49
|
+
- Sidekiq::SortedEntry
|
50
|
+
- Sidekiq::SortedEntry::UniqueExtension
|
51
|
+
- Sidekiq
|
52
|
+
- Sidekiq::Worker
|
53
|
+
- Sidekiq::Worker::ClassMethods
|
54
|
+
- Sidekiq::Worker::Overrides
|
55
|
+
- Sidekiq::Worker::Overrides::Testing
|
56
|
+
- SidekiqUniqueJobs::Timeout::Calculator
|
57
|
+
- SidekiqUniqueJobs::Timeout
|
58
|
+
- SidekiqUniqueJobs::Unlockable
|
59
|
+
- SidekiqUniqueJobs::Util
|
60
|
+
TooManyStatements:
|
61
|
+
exclude:
|
62
|
+
- initialize
|
63
|
+
- Hash#slice!
|
64
|
+
- SidekiqUniqueJobs::Middleware#configure_server_middleware
|
65
|
+
- SidekiqUniqueJobs::Server::Middleware#call
|
66
|
+
- SidekiqUniqueJobs::UniqueArgs#filtered_args
|
67
|
+
- SidekiqUniqueJobs::Util#del
|
68
|
+
UncommunicativeVariableName:
|
69
|
+
exclude:
|
70
|
+
- Hash#slice
|
71
|
+
BooleanParameter:
|
72
|
+
exclude:
|
73
|
+
- SidekiqUniqueJobs::Cli#self.banner
|
74
|
+
UtilityFunction:
|
75
|
+
enabled: false
|
76
|
+
TooManyConstants:
|
77
|
+
exclude:
|
78
|
+
- SidekiqUniqueJobs
|
79
|
+
ManualDispatch:
|
80
|
+
enabled: true
|
81
|
+
exclude:
|
82
|
+
- Hash#slice
|
83
|
+
- Hash#slice!
|
84
|
+
- SidekiqUniqueJobs::Lock::WhileExecutingReject#deadset_kill?
|
85
|
+
- SidekiqUniqueJobs::SidekiqWorkerMethods#worker_method_defined?
|
86
|
+
PrimaDonnaMethod:
|
87
|
+
exclude:
|
88
|
+
- Array
|
89
|
+
NilCheck:
|
90
|
+
enabled: false
|
91
|
+
FeatureEnvy:
|
92
|
+
exclude:
|
93
|
+
- SidekiqUniqueJobs::Lock::WhileExecutingReject#push_to_deadset
|
94
|
+
- SidekiqUniqueJobs::Util#batch_delete
|
95
|
+
NestedIterators:
|
96
|
+
exclude:
|
97
|
+
- SidekiqUniqueJobs::Middleware#configure_client_middleware
|
98
|
+
- SidekiqUniqueJobs::Middleware#configure_server_middleware
|
99
|
+
- SidekiqUniqueJobs::Util#batch_delete
|
100
|
+
TooManyInstanceVariables:
|
101
|
+
exclude:
|
102
|
+
- SidekiqUniqueJobs::Locksmith
|
103
|
+
TooManyMethods:
|
104
|
+
exclude:
|
105
|
+
- SidekiqUniqueJobs::Locksmith
|
data/.rubocop.yml
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
require: rubocop-rspec
|
1
2
|
AllCops:
|
2
3
|
Include:
|
3
4
|
- '**/Rakefile'
|
4
5
|
- 'lib/**/*.rb'
|
5
6
|
- 'bin/**/*.rb'
|
6
7
|
- 'spec/**/*.rb'
|
8
|
+
- 'examples/**/*.rb'
|
7
9
|
Exclude:
|
8
10
|
- 'Gemfile.lock'
|
9
11
|
- 'gemfiles/**/*'
|
@@ -30,7 +32,7 @@ Metrics/MethodLength:
|
|
30
32
|
Metrics/BlockLength:
|
31
33
|
Enabled: true
|
32
34
|
Exclude:
|
33
|
-
- '**/spec
|
35
|
+
- '**/spec/**/*.rb'
|
34
36
|
|
35
37
|
Metrics/PerceivedComplexity:
|
36
38
|
Max: 8
|
@@ -49,12 +51,45 @@ Naming/FileName:
|
|
49
51
|
- '**/Appraisals'
|
50
52
|
- '**/*.gemspec'
|
51
53
|
|
54
|
+
Naming/UncommunicativeMethodParamName:
|
55
|
+
AllowedNames:
|
56
|
+
- ex
|
57
|
+
|
58
|
+
RSpec/DescribeClass:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
RSpec/ExampleLength:
|
62
|
+
Enabled: false
|
63
|
+
|
64
|
+
RSpec/ExpectActual:
|
65
|
+
Enabled: false
|
66
|
+
|
67
|
+
RSpec/ExpectInHook:
|
68
|
+
Enabled: false
|
69
|
+
|
70
|
+
RSpec/MessageSpies:
|
71
|
+
Enabled: false
|
72
|
+
|
73
|
+
RSpec/MultipleExpectations:
|
74
|
+
Enabled: false
|
75
|
+
|
76
|
+
RSpec/NestedGroups:
|
77
|
+
Max: 4
|
78
|
+
Enabled: true
|
79
|
+
|
80
|
+
RSpec/RepeatedExample:
|
81
|
+
Enabled: false
|
82
|
+
|
52
83
|
Style/FrozenStringLiteralComment:
|
53
84
|
Enabled: true
|
54
85
|
|
55
86
|
Style/Documentation:
|
56
87
|
Enabled: false
|
57
88
|
|
89
|
+
Style/SignalException:
|
90
|
+
EnforcedStyle: only_fail
|
91
|
+
Enabled: false
|
92
|
+
|
58
93
|
Style/GlobalVars:
|
59
94
|
Enabled: true
|
60
95
|
|
data/.simplecov
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'simplecov-json'
|
2
|
-
require 'codeclimate-test-reporter'
|
3
2
|
|
4
|
-
SimpleCov.command_name '
|
3
|
+
SimpleCov.command_name 'RSpec'
|
5
4
|
# SimpleCov.refuse_coverage_drop
|
6
5
|
SimpleCov.formatters = [
|
7
6
|
SimpleCov::Formatter::HTMLFormatter,
|
@@ -12,4 +11,10 @@ SimpleCov.start do
|
|
12
11
|
add_filter '/spec/'
|
13
12
|
add_filter '/bin/'
|
14
13
|
add_filter '/gemfiles/'
|
14
|
+
add_filter '/examples/'
|
15
|
+
|
16
|
+
add_group 'Client', 'lib/sidekiq_unique_jobs/client'
|
17
|
+
add_group 'Locks', 'lib/sidekiq_unique_jobs/lock'
|
18
|
+
add_group 'Server', 'lib/sidekiq_unique_jobs/server'
|
19
|
+
add_group 'Timeout', 'lib/sidekiq_unique_jobs/timeout'
|
15
20
|
end
|
data/.travis.yml
CHANGED
@@ -8,29 +8,31 @@ dist: trusty
|
|
8
8
|
sudo: required
|
9
9
|
language: ruby
|
10
10
|
cache: bundler
|
11
|
-
services:
|
12
|
-
- redis-server
|
13
11
|
|
14
12
|
before_install:
|
13
|
+
- sudo rm -rf /etc/apt/sources.list.d/rwky-redis.list
|
14
|
+
- sudo add-apt-repository ppa:chris-lea/redis-server -y
|
15
|
+
- sudo apt-get update -qy
|
16
|
+
- sudo apt-get install redis-server
|
17
|
+
- sudo service redis-server start
|
18
|
+
before_script:
|
15
19
|
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
16
20
|
- chmod +x ./cc-test-reporter
|
17
|
-
before_script:
|
18
21
|
- ./cc-test-reporter before-build
|
19
22
|
script:
|
20
23
|
- if [[ "${COV}" = "true" ]]; then bundle exec rubocop -P; fi;
|
21
|
-
- bundle exec rspec
|
22
|
-
after_script:
|
24
|
+
- bundle exec rspec spec
|
23
25
|
- if [[ "${COV}" = "true" ]]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi;
|
26
|
+
|
24
27
|
rvm:
|
25
|
-
- 2.5.
|
28
|
+
- 2.5.1
|
26
29
|
- 2.4.2
|
27
30
|
- 2.3.2
|
28
|
-
-
|
29
|
-
- jruby-9.2.0.0
|
31
|
+
- jruby-9.1.15.0
|
30
32
|
matrix:
|
31
33
|
fast_finish: true
|
32
34
|
include:
|
33
|
-
- rvm: 2.5.
|
35
|
+
- rvm: 2.5.1
|
34
36
|
gemfile: gemfiles/sidekiq_develop.gemfile
|
35
37
|
env: COV=true
|
36
38
|
gemfile:
|
@@ -40,7 +42,6 @@ gemfile:
|
|
40
42
|
- gemfiles/sidekiq_4.2.gemfile
|
41
43
|
- gemfiles/sidekiq_5.0.gemfile
|
42
44
|
- gemfiles/sidekiq_5.1.gemfile
|
43
|
-
- gemfiles/sidekiq_5.2.gemfile
|
44
45
|
|
45
46
|
notifications:
|
46
47
|
email:
|
data/Appraisals
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
appraise 'sidekiq-develop' do
|
4
|
-
gem 'sidekiq',
|
4
|
+
gem 'sidekiq', git: 'https://github.com/mperham/sidekiq.git'
|
5
5
|
end
|
6
6
|
|
7
7
|
appraise 'sidekiq-4.0' do
|
@@ -17,13 +17,9 @@ appraise 'sidekiq-4.2' do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
appraise 'sidekiq-5.0' do
|
20
|
-
gem 'sidekiq', '
|
20
|
+
gem 'sidekiq', '~> 5.0.0'
|
21
21
|
end
|
22
22
|
|
23
23
|
appraise 'sidekiq-5.1' do
|
24
|
-
gem 'sidekiq', '
|
25
|
-
end
|
26
|
-
|
27
|
-
appraise 'sidekiq-5.2' do
|
28
|
-
gem 'sidekiq', '>= 5.2.0', '< 6'
|
24
|
+
gem 'sidekiq', '~> 5.1.0'
|
29
25
|
end
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## v6.0.0
|
2
|
+
|
3
|
+
- Complete rewrite of the locking mechanism
|
4
|
+
- Improved README
|
5
|
+
- Improved reliability
|
6
|
+
- Improved coverage
|
7
|
+
- Removed a ton of default configuration
|
8
|
+
- Removed support for ActiveJob
|
9
|
+
- Added WhileExecutingReject `unique: :while_executing_reject`
|
10
|
+
- Renamed `UntilTimeout` to `UntilExpired`
|
11
|
+
- Removed concurrency for now (a0cff5bc42edbe7190d6ede7e7f845074d2d7af6)
|
12
|
+
- Improved integration testing for locks
|
13
|
+
|
14
|
+
## v5.1.0
|
15
|
+
|
16
|
+
- Refactoring the runtime locks (WhileExecuting)
|
17
|
+
|
1
18
|
## v5.0.10
|
2
19
|
|
3
20
|
- Cleans up test setup and make tests more readable
|
data/Gemfile
CHANGED
@@ -3,19 +3,22 @@
|
|
3
3
|
source 'https://rubygems.org'
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem 'appraisal',
|
7
|
-
gem 'rspec-its',
|
8
|
-
gem 'rspec-
|
6
|
+
gem 'appraisal', '~> 2.2.0'
|
7
|
+
gem 'rspec-its', require: false
|
8
|
+
gem 'rspec-retry', require: false
|
9
|
+
gem 'rspec-eventually', require: false
|
9
10
|
|
10
11
|
platforms :mri_25 do
|
11
|
-
gem 'benchmark-ips',
|
12
|
-
gem '
|
13
|
-
gem '
|
14
|
-
gem '
|
15
|
-
gem '
|
16
|
-
gem '
|
17
|
-
gem '
|
18
|
-
gem '
|
19
|
-
gem '
|
20
|
-
gem '
|
12
|
+
gem 'benchmark-ips', require: false
|
13
|
+
gem 'fasterer', require: false
|
14
|
+
gem 'guard', require: false
|
15
|
+
gem 'guard-reek', require: false
|
16
|
+
gem 'guard-rspec', require: false
|
17
|
+
gem 'guard-rubocop', require: false
|
18
|
+
gem 'memory_profiler', require: false
|
19
|
+
gem 'pry-byebug', require: false
|
20
|
+
gem 'rubocop', require: false
|
21
|
+
gem 'rubocop-rspec', require: false
|
22
|
+
gem 'simplecov-json', require: false
|
23
|
+
gem 'travis', require: false
|
21
24
|
end
|
data/Guardfile
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
## Uncomment and set this to only include directories you want to watch
|
5
|
+
# directories %w(app lib config test spec features) \
|
6
|
+
# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
7
|
+
|
8
|
+
## Note: if you are using the `directories` clause above and you are not
|
9
|
+
## watching the project directory ('.'), then you will want to move
|
10
|
+
## the Guardfile to a watched dir and symlink it back, e.g.
|
11
|
+
#
|
12
|
+
# $ mkdir config
|
13
|
+
# $ mv Guardfile config/
|
14
|
+
# $ ln -s config/Guardfile .
|
15
|
+
#
|
16
|
+
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
17
|
+
|
18
|
+
# Note: The cmd option is now required due to the increasing number of ways
|
19
|
+
# rspec may be run, below are examples of the most common uses.
|
20
|
+
# * bundler: 'bundle exec rspec'
|
21
|
+
# * bundler binstubs: 'bin/rspec'
|
22
|
+
# * spring: 'bin/rspec' (This will use spring if running and you have
|
23
|
+
# installed the spring binstubs per the docs)
|
24
|
+
# * zeus: 'zeus rspec' (requires the server to be started separately)
|
25
|
+
# * 'just' rspec: 'rspec'
|
26
|
+
|
27
|
+
guard :rspec, cmd: "env COV=false bundle exec rspec" do
|
28
|
+
require "guard/rspec/dsl"
|
29
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
30
|
+
|
31
|
+
# Feel free to open issues for suggestions and improvements
|
32
|
+
|
33
|
+
# RSpec files
|
34
|
+
rspec = dsl.rspec
|
35
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
36
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/integration/#{m[1]}_spec.rb" }
|
37
|
+
watch(%r{^examples/(.+)\.rb$}) { |m| "spec/examples/#{m[1]}_spec.rb" }
|
38
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
39
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
40
|
+
watch(rspec.spec_files)
|
41
|
+
|
42
|
+
# Ruby files
|
43
|
+
ruby = dsl.ruby
|
44
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
45
|
+
end
|
46
|
+
|
47
|
+
guard :rubocop do
|
48
|
+
watch(%r{.+\.rb$})
|
49
|
+
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
50
|
+
end
|
51
|
+
|
52
|
+
guard 'reek' do
|
53
|
+
watch(%r{.+\.rb$})
|
54
|
+
watch('.reek')
|
55
|
+
end
|