workers_loader 0.0.1 → 0.0.3

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,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