rasteira 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/serihiro/rasteira.svg?branch=master)](https://travis-ci.org/serihiro/rasteira)
|
2
|
+
[![Gem Version](https://badge.fury.io/rb/rasteira.svg)](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
|