threaded_in_memory_queue 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8caa931f0f7d256bef31f16943b720971a4aba33
4
- data.tar.gz: 58779b11127871c2922e7d56ae1e65501e2e9264
3
+ metadata.gz: 7fd506634cc145e6c56e1e10deb6c71b6df2721a
4
+ data.tar.gz: b3cd8cc4435837aaf9f3032e1b63e5852bb679a6
5
5
  SHA512:
6
- metadata.gz: 43b262f01b9b14826df1499106e037024d83d65098318831bd761ba32df9a91a2da57e001ea2390ddbb66682559ac2fb9b73c15119b65831cd11ede249124b07
7
- data.tar.gz: 8754a70e9e7e994b89089cfeeeb2f84ba448e2f0d04953d473ab39a20652887846f5969280de16ca48cf677f33bab9e9034e6bf5eb73dafa93412b564ec9fab0
6
+ metadata.gz: 53b102591e99d460779bf499cdb29422fa69eb4448119797a3cd62d50496bfa565c84a5ded0fde3e12115bdcde9286052e5f776925dc088cbc39038cbdc2b785
7
+ data.tar.gz: f48dfc1c7284f51da6051cb8271beb273e80ceb1f1eee79547016aba2005faf293eb80ac0922512d4499e52a496b16c940ae5baac886b89dc61b55e1ef97d610
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- threaded_in_memory_queue (0.0.3)
4
+ threaded_in_memory_queue (0.0.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -54,19 +54,31 @@ The first argument is a class that defines the task to be processed and the rest
54
54
  The default number of worker threads is 16, you can configure that when you start your queue:
55
55
 
56
56
  ```ruby
57
- ThreadedInMemoryQueue.start(size: 5)
57
+ ThreadedInMemoryQueue.config do |config|
58
+ config.size = 5
59
+ end
58
60
  ```
59
61
 
60
62
  By default jobs have a timeout value of 60 seconds. Since this is an in-memory queue (goes away when your process terminates) it is in your best interests to keep jobs small and quick, and not overload the queue. You can configure a different timeout on start:
61
63
 
62
64
  ```ruby
63
- ThreadedInMemoryQueue.start(timeout: 90) # timeout is in seconds
65
+ ThreadedInMemoryQueue.config do |config|
66
+ config.timeout = 90 # timeout is in seconds
67
+ end
64
68
  ```
65
69
 
66
70
  Want a different logger? Specify a different Logger:
67
71
 
68
72
  ```ruby
69
- ThreadedInMemoryQueue.start(logger: MyCustomLogger.new)
73
+ ThreadedInMemoryQueue.config do |config|
74
+ config.logger = Logger.new(STDOUT)
75
+ end
76
+ ```
77
+
78
+ Make sure to configure before you start your queue. You can also inline your config if you want when you start the queue:
79
+
80
+ ```ruby
81
+ ThreadedInMemoryQueue.start(size: 5, timeout: 90, logger: Logger.new(STDOUT))
70
82
  ```
71
83
 
72
84
  For testing or guaranteed code execution use the Inline option:
@@ -89,7 +101,11 @@ at_exit do
89
101
  end
90
102
  ```
91
103
 
92
- This call takes an optional timeout value (in seconds), the default is 10.
104
+ This call takes an optional timeout value (in seconds).
105
+
106
+ ```ruby
107
+ ThreadedInMemoryQueue.stop(42)
108
+ ```
93
109
 
94
110
  ## License
95
111
 
@@ -6,35 +6,46 @@ require 'threaded_in_memory_queue/version'
6
6
  require 'threaded_in_memory_queue/timeout'
7
7
 
8
8
  module ThreadedInMemoryQueue
9
- class << self
10
- attr_accessor :logger, :inline
11
- alias :inline? :inline
12
- end
9
+ STOP_TIMEOUT = 10 # seconds
10
+ extend self
11
+ attr_accessor :inline, :logger, :size, :timeout
12
+ alias :inline? :inline
13
13
 
14
- def self.start(options = {})
15
- self.logger = options[:logger] if options[:logger]
16
- self.master = Master.new(options).start
14
+ def start(options = {})
15
+ self.logger = options[:logger] if options[:logger]
16
+ self.size = options[:size] if options[:size]
17
+ self.timeout = options[:timeout] if options[:timeout]
18
+ self.master = Master.new(logger: self.logger,
19
+ size: self.size,
20
+ timeout: self.timeout)
21
+ self.master.start
17
22
  return self
18
23
  end
19
24
 
20
- def self.started?
25
+ def configure(&block)
26
+ raise "Queue is already started, must configure queue before starting" if started?
27
+ yield self
28
+ end
29
+ alias :config :configure
30
+
31
+ def started?
21
32
  return false unless master
22
33
  master.alive?
23
34
  end
24
35
 
25
- def self.stopped?
36
+ def stopped?
26
37
  !started?
27
38
  end
28
39
 
29
- def self.master
40
+ def master
30
41
  @master
31
42
  end
32
43
 
33
- def self.master=(master)
44
+ def master=(master)
34
45
  @master = master
35
46
  end
36
47
 
37
- def self.enqueue(job, *args)
48
+ def enqueue(job, *args)
38
49
  if inline?
39
50
  job.call(*args)
40
51
  else
@@ -44,14 +55,14 @@ module ThreadedInMemoryQueue
44
55
  return true
45
56
  end
46
57
 
47
- def self.stop(timeout = 10)
58
+ def stop(timeout = STOP_TIMEOUT)
48
59
  return true unless master
49
60
  master.stop(timeout)
50
61
  return true
51
62
  end
52
63
  end
53
64
 
54
- ThreadedInMemoryQueue.logger = Logger.new(STDOUT)
65
+ ThreadedInMemoryQueue.logger = Logger.new(STDOUT)
55
66
  ThreadedInMemoryQueue.logger.level = Logger::INFO
56
67
 
57
68
 
@@ -1,3 +1,3 @@
1
1
  module ThreadedInMemoryQueue
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+ require 'stringio'
3
+
4
+ class ConfigTest < Test::Unit::TestCase
5
+
6
+ def teardown
7
+ ThreadedInMemoryQueue.stop
8
+ end
9
+
10
+ def test_config_works
11
+ fake_out = StringIO.new
12
+ logger = Logger.new(fake_out)
13
+ size = rand(1..99)
14
+ timeout = rand(1..99)
15
+
16
+ ThreadedInMemoryQueue.configure do |config|
17
+ config.size = size
18
+ config.logger = logger
19
+ config.timeout = timeout
20
+ end
21
+
22
+ ThreadedInMemoryQueue.start
23
+
24
+ assert_equal ThreadedInMemoryQueue.size, size
25
+ assert_equal ThreadedInMemoryQueue.master.instance_variable_get("@size"), size
26
+
27
+ assert_equal ThreadedInMemoryQueue.timeout, timeout
28
+ assert_equal ThreadedInMemoryQueue.master.instance_variable_get("@timeout"), timeout
29
+
30
+ assert_equal ThreadedInMemoryQueue.logger, logger
31
+ assert_equal ThreadedInMemoryQueue.master.instance_variable_get("@logger"), logger
32
+ end
33
+
34
+ def test_config_cannot_call_after_start
35
+ ThreadedInMemoryQueue.start
36
+ assert_raise(RuntimeError) do
37
+ ThreadedInMemoryQueue.configure do |config|
38
+ config.size = size
39
+ config.logger = logger
40
+ config.timeout = timeout
41
+ end
42
+ end
43
+ end
44
+
45
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: threaded_in_memory_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Schneeman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-11 00:00:00.000000000 Z
11
+ date: 2013-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -58,6 +58,7 @@ files:
58
58
  - lib/threaded_in_memory_queue/version.rb
59
59
  - lib/threaded_in_memory_queue/worker.rb
60
60
  - test/test_helper.rb
61
+ - test/threaded_in_memory_queue/config_test.rb
61
62
  - test/threaded_in_memory_queue/master_test.rb
62
63
  - test/threaded_in_memory_queue/worker_test.rb
63
64
  - test/threaded_in_memory_queue_test.rb
@@ -88,6 +89,7 @@ specification_version: 4
88
89
  summary: Memory, Enqueue stuff you will
89
90
  test_files:
90
91
  - test/test_helper.rb
92
+ - test/threaded_in_memory_queue/config_test.rb
91
93
  - test/threaded_in_memory_queue/master_test.rb
92
94
  - test/threaded_in_memory_queue/worker_test.rb
93
95
  - test/threaded_in_memory_queue_test.rb