workling 0.4.9.7 → 0.4.9.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,7 +28,7 @@ module Workling
28
28
  @@exposed_methods ||= {}
29
29
 
30
30
  def self.inherited(subclass)
31
- Workling::Discovery.discovered << subclass
31
+ Workling::Discovery.add_worker subclass
32
32
  end
33
33
 
34
34
  # expose a method using a custom queue name
@@ -54,8 +54,13 @@ module Workling
54
54
 
55
55
  # closes the memcache connection
56
56
  def close
57
- self.connection.flush_all
58
- self.connection.reset
57
+ begin
58
+ self.connection.flush_all
59
+ rescue MemCache::MemCacheError => err
60
+ STDERR.puts "Memcache client doesn't respond to flush all"
61
+ ensure
62
+ self.connection.reset
63
+ end
59
64
  end
60
65
 
61
66
  # implements the client job request and retrieval
@@ -3,8 +3,12 @@
3
3
  #
4
4
  module Workling
5
5
  class Discovery
6
- cattr_accessor :discovered
7
- @@discovered ||= []
6
+ cattr_reader :discovered_workers
7
+ @@discovered_workers ||= []
8
+
9
+ def self.add_worker(klass)
10
+ @@discovered_workers << klass
11
+ end
8
12
 
9
13
  # requires worklings so that they are added to routing.
10
14
  def self.discover!
@@ -93,7 +93,7 @@ module Workling
93
93
  # Returns the complete set of active routes
94
94
  #
95
95
  def routes
96
- @active_routes ||= Workling::Discovery.discovered.map { |clazz| @routing.queue_names_routing_class(clazz) }.flatten
96
+ Workling::Discovery.discovered_workers.map { |clazz| @routing.queue_names_routing_class(clazz) }.flatten
97
97
  end
98
98
 
99
99
  # Thanks for this Brent!
@@ -55,7 +55,7 @@ module Workling
55
55
  logger.info("Starting ThreadPoolPoller...")
56
56
 
57
57
  # Determine which queues need checking
58
- Workling::Discovery.discovered.map do |klass|
58
+ Workling::Discovery.discovered_workers.map do |klass|
59
59
  @pollers.synchronize do
60
60
  # Polls the backing queue for jobs to be done
61
61
  @pollers << Thread.new do
@@ -21,7 +21,7 @@ module Workling
21
21
 
22
22
  def listen
23
23
  # Create a thread for each worker.
24
- Workling::Discovery.discovered.each do |clazz|
24
+ Workling::Discovery.discovered_workers.each do |clazz|
25
25
  logger.debug("Discovered listener #{clazz}")
26
26
  @workers.add(Thread.new(clazz) { |c| clazz_listen(c) })
27
27
  end
@@ -42,7 +42,7 @@ module Workling
42
42
  # Check if all Worker threads have been started.
43
43
  def started?
44
44
  logger.debug("checking if started... list size is #{ worker_threads }")
45
- Workling::Discovery.discovered.size == worker_threads
45
+ Workling::Discovery.discovered_workers.size == worker_threads
46
46
  end
47
47
 
48
48
  # number of worker threads running
@@ -41,7 +41,7 @@ module Workling
41
41
 
42
42
  private
43
43
  def build
44
- Workling::Discovery.discovered.each do |clazz|
44
+ Workling::Discovery.discovered_workers.each do |clazz|
45
45
  methods = clazz.public_instance_methods(false)
46
46
  methods.each do |method|
47
47
  next if method == 'create' # Skip the create method
@@ -52,4 +52,4 @@ module Workling
52
52
  end
53
53
  end
54
54
  end
55
- end
55
+ end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workling
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.9.7
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ - 9
9
+ - 8
10
+ version: 0.4.9.8
5
11
  platform: ruby
6
12
  authors:
7
13
  - Rany Keddo
@@ -77,18 +83,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
83
  requirements:
78
84
  - - ">="
79
85
  - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
80
88
  version: "0"
81
- version:
82
89
  required_rubygems_version: !ruby/object:Gem::Requirement
83
90
  requirements:
84
91
  - - ">="
85
92
  - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
86
95
  version: "0"
87
- version:
88
96
  requirements: []
89
97
 
90
98
  rubyforge_project:
91
- rubygems_version: 1.3.5
99
+ rubygems_version: 1.3.6
92
100
  signing_key:
93
101
  specification_version: 2
94
102
  summary: easily do background work in rails, without commiting to a particular runner. comes with starling, bj and spawn runners.