workling 0.4.9.7 → 0.4.9.8

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.
@@ -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.