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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTVlM2IzMzNhYjRjZmFlYzBiYTBhNWY3NDZmMTAyNjg0ZTJmY2Q4YQ==
4
+ MzM2NTBjNDBlOGZhZTVhMjI5MDUzMDJkYTA5MTNkYmY4ZjcxZjBhMA==
5
5
  data.tar.gz: !binary |-
6
- MmYzOGJmOGY3MWUxZTEzMDg1OTNiYmE0ODNiODViNWEzOTNhMTQyMQ==
6
+ NmQ0YzNmMTc5ZWJiZDZmYTYwNTlmMmM1OWQwZGExY2E0NjU0MWQwZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzExODcxMWIwYTEyYzI5MWYyZWI1ZDNmOGQ4YmUxNDg5MGEyMmQ3NDQ2MGJj
10
- NjM2Y2I4YjkwMDVkMzhjMDc1ODMwMGJkYTFlZDUyYWY1NjU3NTI0ZDkzMmEy
11
- YWRmYmJmMmM0NTJkMDRjZTc2MjJiNzhhY2U2ZjY2MTcwZTI4ZTk=
9
+ N2ViMDA2YjliNzUwMjEzYTViODFjNmMyOWRjODQwNjkyYjg5YjM3NTQwNDg0
10
+ YjkxZWY1ZjY2NjA0NmU4OWJkOGYxMTRhYzkwNDlkYmNiZWIwZWQ2NGM1ZWNj
11
+ NmUyNmE4MDU3ZGNkNGFlNWE0ZDk3ZDlkMDkyMjk3NWYwZjk2ZGI=
12
12
  data.tar.gz: !binary |-
13
- NzAxNzA5ZDE1ZjEyMDcxZTgwZTgyNjJhM2VhMWVjNDlhZjRmODM3NzY3ZTgw
14
- YzRkNGEwYzBmZmI1YWVkMzQ2OTY2MTMzNmVhNWJkMzQ1Y2U5NDAyYTM3YTc0
15
- OTRlNTJlMjBjYjgyNzgzYTUxMmZmZjI5MjY2NTNjZWJlZGNkY2E=
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
@@ -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
- @base = base
11
-
12
- @parent = base.split('/').last if parent
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(base, '{**/*.rb}')
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 relative_path_for(path)
36
- parent.nil? ? path : File.join(parent, path)
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
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module WorkersLoader
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.3'
5
5
  end
@@ -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(:base) do
6
- File.join(File.dirname(__FILE__), '..', '..', 'support', 'dummy')
5
+ let(:support_path) do
6
+ File.join(File.dirname(__FILE__), '..', '..', 'support')
7
7
  end
8
- subject { described_class.new(base) }
9
8
 
10
- describe '#files' do
11
- let(:files) { %w(dummy/bar/base dummy/foo dummy/bar/baz).sort }
12
- it { expect(subject.files.sort).to eq(files) }
13
- end
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
- describe '#class_for' do
16
- it { expect(subject.class_for('dummy/foo')).to eq(Dummy::Foo) }
17
- it { expect(subject.class_for('dummy/bar/baz')).to eq(Dummy::Bar::Baz) }
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
- describe '#queue_for' do
21
- it { expect(subject.queue_for('dummy/foo')).to eq(:dummy_foo) }
22
- it { expect(subject.queue_for('dummy/bar/baz')).to eq(:baz_queue) }
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([:baz_queue, :dummy_foo]) }
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) { 'Workers already present! baz_queue, dummy_foo' }
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
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ module Reports
4
+ class Usage
5
+ @queue = :usage_queue
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ # encoding: utf-8
2
+
3
+ class User
4
+ @queue = :user_queue
5
+ 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.1
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-01-30 00:00:00.000000000 Z
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