rasteira 0.1.0 → 0.1.1
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 +4 -4
- data/README.md +2 -1
- data/example/hello_worker.rb +9 -3
- data/lib/rasteira/core/job.rb +12 -9
- data/lib/rasteira/embed_worker/manager.rb +17 -2
- data/lib/rasteira/version.rb +1 -1
- data/rasteira.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 860a472e8ee099a7fe0c47a89ca7a9efac747d55
|
4
|
+
data.tar.gz: 274abd1b5e39129a011df5b5821440880152e1e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 617692a78f56e64883653099f14ad4659a27ba99149f77b42c038bd7f8aa7fcbd09f8bddc488c2dfd395ec1d2f419278204311c692a0048cdd1c80b5e68dc189
|
7
|
+
data.tar.gz: 872e05a9264d6aab21f22572f809265032f7cfccf2e356a322a5fa82fb3794cfc52bde94f4e0588e01c8498a8fe4c4289482cc2cbcd2beea31bbb997fb67fd8c
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
[](https://travis-ci.org/serihiro/rasteira)
|
2
|
+
[](https://badge.fury.io/rb/rasteira)
|
2
3
|
|
3
4
|
# Rasteira
|
4
5
|
|
@@ -41,7 +42,7 @@ And start Embed Worker Manager and enqueue a job.
|
|
41
42
|
|
42
43
|
```ruby
|
43
44
|
manager = Rasteira::EmbedWorker::Manager.run
|
44
|
-
manager.enqueue_job!('HelloWorker', 'example/hello_worker.rb', 'serihiro')
|
45
|
+
manager.enqueue_job!('HelloWorker', worker_file_path: 'example/hello_worker.rb', args: ['serihiro', 'hogetarou'])
|
45
46
|
```
|
46
47
|
|
47
48
|
## Development
|
data/example/hello_worker.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
# To test with bin/console, execute like this:
|
2
2
|
#
|
3
3
|
# 2.4.0 :001 > m = Rasteira::EmbedWorker::Manager.run
|
4
|
-
# 2.4.0 :002 > m.enqueue_job!('HelloWorker', 'example/hello_worker.rb', 'serihiro')
|
4
|
+
# 2.4.0 :002 > m.enqueue_job!('HelloWorker', worker_file_path: 'example/hello_worker.rb', args: ['serihiro', 'hogetarou'])
|
5
|
+
#
|
6
|
+
# OR
|
7
|
+
#
|
8
|
+
# 2.4.0 :001 > m = Rasteira::EmbedWorker::Manager.run
|
9
|
+
# 2.4.0 :002 > require './example/hello_worker.rb'
|
10
|
+
# 2.4.0 :003 > m.enqueue_job!('HelloWorker', args: ['serihiro', 'hogetarou'])
|
5
11
|
#
|
6
12
|
class HelloWorker
|
7
|
-
def perform(
|
8
|
-
puts "Hello, #{
|
13
|
+
def perform(name1, name2)
|
14
|
+
puts "Hello, #{name1}, #{name2}"
|
9
15
|
end
|
10
16
|
end
|
data/lib/rasteira/core/job.rb
CHANGED
@@ -2,23 +2,26 @@ module Rasteira
|
|
2
2
|
module Core
|
3
3
|
class Job
|
4
4
|
attr_reader :worker_name, :worker_file_path, :args, :status
|
5
|
-
|
5
|
+
|
6
6
|
STATUSES = {
|
7
7
|
ready: 0,
|
8
8
|
in_process: 1,
|
9
9
|
finished: 2,
|
10
10
|
failed: 3
|
11
11
|
}.freeze
|
12
|
-
|
13
|
-
def initialize(worker_name,
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
|
13
|
+
def initialize(worker_name, options = {})
|
14
|
+
if !options[:worker_file_path].nil?
|
15
|
+
@worker_file_path = File.expand_path(options[:worker_file_path], options[:current_directory] || Dir.pwd)
|
16
|
+
unless File.exists?(@worker_file_path)
|
17
|
+
raise ArgumentError.new("#{@worker_file_path} could not be found")
|
18
|
+
end
|
19
|
+
|
20
|
+
require(@worker_file_path)
|
17
21
|
end
|
18
|
-
|
19
|
-
require(@worker_file_path)
|
22
|
+
|
20
23
|
@worker_name = worker_name
|
21
|
-
@args = args
|
24
|
+
@args = options[:args]
|
22
25
|
@status = STATUSES[:ready]
|
23
26
|
end
|
24
27
|
|
@@ -9,6 +9,8 @@ module Rasteira
|
|
9
9
|
@mutex = Mutex.new
|
10
10
|
end
|
11
11
|
|
12
|
+
# Create manager instance and run
|
13
|
+
# @return [Rasteira::EmbedWorker::Manager] an instance of a running manager
|
12
14
|
def self.run
|
13
15
|
this = new
|
14
16
|
this.run
|
@@ -18,6 +20,8 @@ module Rasteira
|
|
18
20
|
# TODO to be specifiable
|
19
21
|
MIN_THREAD_SIZE = 5
|
20
22
|
|
23
|
+
# Create thread pool and start all threads
|
24
|
+
# @return [nil]
|
21
25
|
def run
|
22
26
|
@thread_pool = MIN_THREAD_SIZE.times.map do
|
23
27
|
Thread.start { worker_thread_process }
|
@@ -38,17 +42,28 @@ module Rasteira
|
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
41
|
-
|
45
|
+
# Enqueue new job
|
46
|
+
# @param [String] worker_name the name of worker class
|
47
|
+
# @param [Hash] options
|
48
|
+
# @option options [String] :worker_file_path the file path of worker script
|
49
|
+
# @option options [String] :current_directory the directory where you want to handle as a current directory
|
50
|
+
# @option options [Object] :args the arguments for the perform method in the worker class
|
51
|
+
# @return [Rasteira::Core::Job] job created job
|
52
|
+
def enqueue_job!(worker_name, options = {})
|
42
53
|
@mutex.synchronize do
|
43
|
-
@job_pool << ::Rasteira::Core::Job.new(worker_name,
|
54
|
+
@job_pool << ::Rasteira::Core::Job.new(worker_name, options)
|
44
55
|
end
|
45
56
|
end
|
46
57
|
|
58
|
+
# Kill all worker threads
|
59
|
+
# @return nil
|
47
60
|
def shutdown_workers!
|
48
61
|
@thread_pool.each(&:kill)
|
49
62
|
@thread_manager.kill
|
50
63
|
end
|
51
64
|
|
65
|
+
# Return current worker threads id and status hashes
|
66
|
+
# @return [Array<Hash>]
|
52
67
|
def worker_statuses
|
53
68
|
@thread_pool.map do |thread|
|
54
69
|
{ id: thread.object_id, status: thread.status }
|
data/lib/rasteira/version.rb
CHANGED
data/rasteira.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rasteira
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuhiro Serizawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: simple, on memory, and thread base job queue worker
|
56
70
|
email:
|
57
71
|
- nserihiro@gmail.com
|