workers_loader 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Rakefile +1 -3
- data/lib/workers_loader/path.rb +6 -8
- data/lib/workers_loader/version.rb +1 -1
- data/lib/workers_loader.rb +1 -1
- data/spec/lib/workers_loader/path_spec.rb +63 -13
- data/spec/lib/workers_loader_spec.rb +3 -3
- data/spec/support/data/reports/usage.rb +7 -0
- data/spec/support/data/user.rb +5 -0
- metadata +34 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzM2NTBjNDBlOGZhZTVhMjI5MDUzMDJkYTA5MTNkYmY4ZjcxZjBhMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmQ0YzNmMTc5ZWJiZDZmYTYwNTlmMmM1OWQwZGExY2E0NjU0MWQwZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
N2ViMDA2YjliNzUwMjEzYTViODFjNmMyOWRjODQwNjkyYjg5YjM3NTQwNDg0
|
10
|
+
YjkxZWY1ZjY2NjA0NmU4OWJkOGYxMTRhYzkwNDlkYmNiZWIwZWQ2NGM1ZWNj
|
11
|
+
NmUyNmE4MDU3ZGNkNGFlNWE0ZDk3ZDlkMDkyMjk3NWYwZjk2ZGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MGMyNzU4N2RjZWY5ZWE2OTczMTMzNDYwOWU5MWU0MjVhNjE1NGQwMjE4MDU5
|
14
|
+
YTI0MTQ2OWEzN2RmYjBlMGZiMGVhZjQ4NjlhNzM3N2M1NDQ5NjYwMDU5Mjc2
|
15
|
+
ZTA4ZGJlYWY5NzM1ZTE3MGFjMTAzZTdmZDEyNmZkYTc3NGU2Nzg=
|
data/Rakefile
CHANGED
@@ -18,8 +18,6 @@ Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }
|
|
18
18
|
|
19
19
|
require 'rspec/core'
|
20
20
|
require 'rspec/core/rake_task'
|
21
|
-
|
22
|
-
desc 'Run all specs in spec directory (excluding plugin specs)'
|
23
|
-
RSpec::Core::RakeTask.new(spec: 'app:db:test:prepare')
|
21
|
+
RSpec::Core::RakeTask.new(:spec)
|
24
22
|
|
25
23
|
task default: :spec
|
data/lib/workers_loader/path.rb
CHANGED
@@ -7,16 +7,15 @@ module WorkersLoader
|
|
7
7
|
|
8
8
|
def initialize(base, parent = true)
|
9
9
|
base = match[1] if match = /(.*)\/$/.match(base)
|
10
|
-
|
11
|
-
|
12
|
-
@
|
10
|
+
path = base.split('/')
|
11
|
+
@parent = path.pop if parent
|
12
|
+
@base = path.join('/')
|
13
13
|
end
|
14
14
|
|
15
15
|
def files
|
16
|
-
path = File.join(
|
16
|
+
path = File.join(base_with_parent, '{**/*.rb}')
|
17
17
|
Dir[path]
|
18
18
|
.map { |file| /#{base}\/(.*).rb/.match(file)[1] }
|
19
|
-
.map { |relative_path| relative_path_for(relative_path) }
|
20
19
|
end
|
21
20
|
|
22
21
|
def class_for(relative_path)
|
@@ -32,9 +31,8 @@ module WorkersLoader
|
|
32
31
|
Resque.queue_from_class(class_for(relative_path))
|
33
32
|
end
|
34
33
|
|
35
|
-
def
|
36
|
-
parent.nil? ?
|
34
|
+
def base_with_parent
|
35
|
+
parent.nil? ? base : File.join(base, parent)
|
37
36
|
end
|
38
|
-
private :relative_path_for
|
39
37
|
end
|
40
38
|
end
|
data/lib/workers_loader.rb
CHANGED
@@ -30,7 +30,7 @@ module WorkersLoader
|
|
30
30
|
duplacates = workers_in_path
|
31
31
|
.select { |worker| workers.include?(worker) }
|
32
32
|
if duplacates.any?
|
33
|
-
fail("Workers already present! #{duplacates.join(', ')}")
|
33
|
+
fail("Workers already present! #{duplacates.sort.join(', ')}")
|
34
34
|
end
|
35
35
|
|
36
36
|
self.workers += workers_in_path
|
@@ -2,23 +2,73 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe WorkersLoader::Path do
|
5
|
-
let(:
|
6
|
-
File.join(File.dirname(__FILE__), '..', '..', 'support'
|
5
|
+
let(:support_path) do
|
6
|
+
File.join(File.dirname(__FILE__), '..', '..', 'support')
|
7
7
|
end
|
8
|
-
subject { described_class.new(base) }
|
9
8
|
|
10
|
-
|
11
|
-
let(:
|
12
|
-
|
13
|
-
|
9
|
+
context 'without parent' do
|
10
|
+
let(:base) { File.join(support_path, 'data') }
|
11
|
+
subject { described_class.new(base, false) }
|
12
|
+
|
13
|
+
describe '#base' do
|
14
|
+
it { expect(subject.base).to eq(base) }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#base_with_parent' do
|
18
|
+
it { expect(subject.base_with_parent).to eq(base) }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#parent' do
|
22
|
+
it { expect(subject.parent).to be_nil }
|
23
|
+
end
|
14
24
|
|
15
|
-
|
16
|
-
|
17
|
-
|
25
|
+
describe '#files' do
|
26
|
+
let(:files) { %w(user reports/usage).sort }
|
27
|
+
it { expect(subject.files.sort).to eq(files) }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#class_for' do
|
31
|
+
it { expect(subject.class_for('user')).to eq(User) }
|
32
|
+
it { expect(subject.class_for('reports/usage')).to eq(Reports::Usage) }
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#queue_for' do
|
36
|
+
it { expect(subject.queue_for('user')).to eq(:user_queue) }
|
37
|
+
it { expect(subject.queue_for('reports/usage')).to eq(:usage_queue) }
|
38
|
+
end
|
18
39
|
end
|
19
40
|
|
20
|
-
|
21
|
-
|
22
|
-
|
41
|
+
context 'with parent' do
|
42
|
+
let(:base) { File.join(support_path, 'dummy') }
|
43
|
+
let(:base_without_parent) { support_path }
|
44
|
+
|
45
|
+
subject { described_class.new(base) }
|
46
|
+
|
47
|
+
describe '#base' do
|
48
|
+
it { expect(subject.base).to eq(base_without_parent) }
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#base_with_parent' do
|
52
|
+
it { expect(subject.base_with_parent).to eq(base) }
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#parent' do
|
56
|
+
it { expect(subject.parent).to eq('dummy') }
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#files' do
|
60
|
+
let(:files) { %w(dummy/bar/base dummy/foo dummy/bar/baz).sort }
|
61
|
+
it { expect(subject.files.sort).to eq(files) }
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#class_for' do
|
65
|
+
it { expect(subject.class_for('dummy/foo')).to eq(Dummy::Foo) }
|
66
|
+
it { expect(subject.class_for('dummy/bar/baz')).to eq(Dummy::Bar::Baz) }
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '#queue_for' do
|
70
|
+
it { expect(subject.queue_for('dummy/foo')).to eq(:dummy_foo) }
|
71
|
+
it { expect(subject.queue_for('dummy/bar/baz')).to eq(:baz_queue) }
|
72
|
+
end
|
23
73
|
end
|
24
74
|
end
|
@@ -35,11 +35,11 @@ describe WorkersLoader do
|
|
35
35
|
described_class.add_path(workers_path)
|
36
36
|
described_class.load_workers!
|
37
37
|
end
|
38
|
-
|
39
|
-
it { expect(described_class.workers).to eq(
|
38
|
+
let(:workers) { [:baz_queue, :dummy_foo].sort }
|
39
|
+
it { expect(described_class.workers.sort).to eq(workers) }
|
40
40
|
|
41
41
|
context 'prevent duplicates' do
|
42
|
-
let(:message) {
|
42
|
+
let(:message) { "Workers already present! #{workers.join(', ')}" }
|
43
43
|
it { expect { described_class.load_workers! }.to raise_error(message) }
|
44
44
|
end
|
45
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workers_loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ricard Forniol
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.21
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: resque
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec-rails
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - ! '>='
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: fuubar
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
description: Resque workers loading strategy system
|
56
84
|
email:
|
57
85
|
- ricard.forniol@pushtech.com
|
@@ -68,6 +96,8 @@ files:
|
|
68
96
|
- spec/lib/workers_loader/path_spec.rb
|
69
97
|
- spec/lib/workers_loader_spec.rb
|
70
98
|
- spec/spec_helper.rb
|
99
|
+
- spec/support/data/reports/usage.rb
|
100
|
+
- spec/support/data/user.rb
|
71
101
|
- spec/support/dummy/bar/base.rb
|
72
102
|
- spec/support/dummy/bar/baz.rb
|
73
103
|
- spec/support/dummy/foo.rb
|
@@ -98,6 +128,8 @@ test_files:
|
|
98
128
|
- spec/lib/workers_loader/path_spec.rb
|
99
129
|
- spec/lib/workers_loader_spec.rb
|
100
130
|
- spec/spec_helper.rb
|
131
|
+
- spec/support/data/reports/usage.rb
|
132
|
+
- spec/support/data/user.rb
|
101
133
|
- spec/support/dummy/bar/base.rb
|
102
134
|
- spec/support/dummy/bar/baz.rb
|
103
135
|
- spec/support/dummy/foo.rb
|