hawking 0.1 → 0.2
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 +23 -19
- data/Rakefile +4 -1
- data/bin/hawking +2 -5
- data/examples/enqueue.rb +1 -1
- data/hawking.gemspec +2 -1
- data/lib/hawking.rb +8 -8
- data/spec/hawking_spec.rb +5 -5
- metadata +6 -6
- data/.rspec +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bfaf1499ae4d60b4d120b7cbbbcaf4e3857b2ee5
|
|
4
|
+
data.tar.gz: 7838b9bd81fc9143683142e0ef157c4bdd540d0d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 40a663df64d4103861171fe57b2519d30a15b5387bc378cea54bc4ebdd446dbcc36dde015221659de0b81d124aafe3cc609b89cb01c97522a5e1a95ad8718b1d
|
|
7
|
+
data.tar.gz: ec308bad645f9efcdc537b94000ba3fdc04302f93e994c169316a9fe83d2b022fe9f0212bb32e328dc28708019d1c6636b96a451dd33d23784c4bd977c86406c
|
data/README.md
CHANGED
|
@@ -1,37 +1,44 @@
|
|
|
1
1
|
Hawking
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
[](http://badge.fury.io/rb/hawking)
|
|
4
5
|
[](https://travis-ci.org/rogeriozambon/hawking)
|
|
5
6
|
[](https://codeclimate.com/github/rogeriozambon/hawking)
|
|
6
7
|
|
|
7
|
-
Background job queueing using
|
|
8
|
+
Background job queueing using TCPSocket. Inspired in the [Stalker gem](https://github.com/han/stalker).
|
|
8
9
|
|
|
9
10
|
Queueing jobs
|
|
10
11
|
-------------
|
|
11
12
|
|
|
12
13
|
From anywhere in your app:
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
~~~.ruby
|
|
16
|
+
require 'hawking'
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
hawking = Hawking::Queue.new
|
|
19
|
+
|
|
20
|
+
hawking.put 'email.send', to: 'joe@example.com'
|
|
21
|
+
hawking.put 'post.cleanup', id: post.id
|
|
22
|
+
~~~
|
|
18
23
|
|
|
19
24
|
Working jobs
|
|
20
25
|
------------
|
|
21
26
|
|
|
22
27
|
In a standalone file, typically jobs.rb or worker.rb:
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
~~~.ruby
|
|
30
|
+
require 'hawking'
|
|
25
31
|
|
|
26
|
-
|
|
32
|
+
extend Hawking
|
|
27
33
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
job 'email.send' do |data|
|
|
35
|
+
Pony.send(to: data[:to], subject: "Hello there")
|
|
36
|
+
end
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
job 'post.cleanup' do |data|
|
|
39
|
+
Post.find(data[:id]).cleanup
|
|
40
|
+
end
|
|
41
|
+
~~~
|
|
35
42
|
|
|
36
43
|
Running
|
|
37
44
|
-------
|
|
@@ -40,18 +47,15 @@ Hawking:
|
|
|
40
47
|
|
|
41
48
|
$ sudo gem install hawking
|
|
42
49
|
|
|
43
|
-
Now run a worker using the
|
|
50
|
+
Now run a worker using the binary:
|
|
44
51
|
|
|
45
52
|
$ hawking jobs.rb
|
|
46
53
|
Working 2 jobs: [ email.send post.cleanup ]
|
|
47
|
-
Working send.email (email=hello@example.com)
|
|
48
|
-
|
|
49
|
-
Hawk will log to stdout as it starts working each job.
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
Working send.email ({:to=>joe@example.com})
|
|
56
|
+
Working post.cleanup ({:id=>1})
|
|
52
57
|
|
|
53
|
-
|
|
54
|
-
Working 1 jobs: [ email.send ]
|
|
58
|
+
Hawking will log to stdout as it starts working each job.
|
|
55
59
|
|
|
56
60
|
Running the tests
|
|
57
61
|
-----------------
|
data/Rakefile
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
require "bundler/gem_tasks"
|
|
2
2
|
require "rspec/core/rake_task"
|
|
3
3
|
|
|
4
|
-
RSpec::Core::RakeTask.new
|
|
4
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
|
5
|
+
t.rspec_opts = ["--colour", "--format documentation"]
|
|
6
|
+
end
|
|
5
7
|
|
|
8
|
+
desc "Default build will run specs"
|
|
6
9
|
task default: :spec
|
data/bin/hawking
CHANGED
|
@@ -2,13 +2,10 @@
|
|
|
2
2
|
STDERR.sync = STDOUT.sync = true
|
|
3
3
|
|
|
4
4
|
require "hawking"
|
|
5
|
-
extend Hawking
|
|
6
|
-
|
|
7
|
-
usage = "hawking <jobs.rb> [<job>[,<job>,..]]"
|
|
8
5
|
|
|
9
|
-
|
|
10
|
-
jobs = ARGV.shift.split(',') rescue nil
|
|
6
|
+
extend Hawking
|
|
11
7
|
|
|
8
|
+
file = ARGV.shift or abort "hawking <jobs.rb>"
|
|
12
9
|
file = "./#{file}" unless file.match(/^[\/.]/)
|
|
13
10
|
|
|
14
11
|
require file
|
data/examples/enqueue.rb
CHANGED
data/hawking.gemspec
CHANGED
|
@@ -9,8 +9,9 @@ Gem::Specification.new do |s|
|
|
|
9
9
|
s.authors = ["Rogério Zambon"]
|
|
10
10
|
s.email = ["rogeriozambon@gmail.com"]
|
|
11
11
|
s.homepage = "http://github.com/rogeriozambon/hawking"
|
|
12
|
-
s.summary = "Background job queueing using
|
|
12
|
+
s.summary = "Background job queueing using TCPSocket. Inspired in the Stalkeg gem."
|
|
13
13
|
s.description = s.summary
|
|
14
|
+
s.license = "MIT"
|
|
14
15
|
|
|
15
16
|
s.executables = ["hawking"]
|
|
16
17
|
|
data/lib/hawking.rb
CHANGED
|
@@ -5,10 +5,10 @@ require "timeout"
|
|
|
5
5
|
module Hawking
|
|
6
6
|
extend self
|
|
7
7
|
|
|
8
|
-
VERSION = "0.
|
|
8
|
+
VERSION = "0.2"
|
|
9
9
|
|
|
10
10
|
def run
|
|
11
|
-
puts "Working #{@@jobs.size} jobs: [ #{@@jobs.keys.join(' ')} ]"
|
|
11
|
+
puts "Working #{@@jobs.size} jobs: [ #{@@jobs.keys.join(' ')} ]\r\r"
|
|
12
12
|
|
|
13
13
|
server = TCPServer.open "127.0.0.1", 4481
|
|
14
14
|
|
|
@@ -17,17 +17,17 @@ module Hawking
|
|
|
17
17
|
|
|
18
18
|
def work_jobs(server)
|
|
19
19
|
Thread.start(server.accept) do |listener|
|
|
20
|
-
|
|
20
|
+
begin
|
|
21
|
+
Timeout::timeout(20) do
|
|
22
|
+
puts "Working on #{job[:queue]} (#{job[:data]})\r"
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
job = JSON.parse listener.gets, symbolize_names: true
|
|
23
25
|
|
|
24
|
-
begin
|
|
25
|
-
Timeout::timeout(120) do
|
|
26
26
|
handler = @@jobs[job[:queue]]
|
|
27
27
|
handler.call(job[:data])
|
|
28
28
|
end
|
|
29
29
|
rescue Timeout::Error
|
|
30
|
-
raise "The job hit
|
|
30
|
+
raise "The job hit 20 seconds timeout"
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|
|
@@ -47,7 +47,7 @@ module Hawking
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def put(queue, data)
|
|
50
|
-
info = JSON.generate :
|
|
50
|
+
info = JSON.generate queue: queue, data: data
|
|
51
51
|
|
|
52
52
|
@socket.write info
|
|
53
53
|
@socket.close
|
data/spec/hawking_spec.rb
CHANGED
|
@@ -2,12 +2,12 @@ require "spec_helper"
|
|
|
2
2
|
|
|
3
3
|
describe "Hawking" do
|
|
4
4
|
before do
|
|
5
|
-
$stdout.stub(:write).and_return
|
|
5
|
+
$stdout.stub(:write).and_return nil
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
it "storing a job" do
|
|
9
9
|
Hawking.job "example" do |data|
|
|
10
|
-
puts "Some example with #{data}"
|
|
10
|
+
puts "Some example with #{data.inspect}"
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
jobs = Hawking.jobs
|
|
@@ -22,7 +22,7 @@ describe "Hawking" do
|
|
|
22
22
|
server = TCPServer.open "127.0.0.1", 4481
|
|
23
23
|
|
|
24
24
|
hawking = Hawking::Queue.new
|
|
25
|
-
hawking.put "example", :
|
|
25
|
+
hawking.put "example", data: "john@example.org"
|
|
26
26
|
|
|
27
27
|
data = JSON.parse server.accept.gets, symbolize_names: true
|
|
28
28
|
|
|
@@ -37,13 +37,13 @@ describe "Hawking" do
|
|
|
37
37
|
|
|
38
38
|
it "works" do
|
|
39
39
|
Hawking.job "example" do |data|
|
|
40
|
-
puts "Some example with #{data}"
|
|
40
|
+
puts "Some example with #{data.inspect}"
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
server = TCPServer.open "127.0.0.1", 4481
|
|
44
44
|
|
|
45
45
|
hawking = Hawking::Queue.new
|
|
46
|
-
hawking.put "example", :
|
|
46
|
+
hawking.put "example", data: "john@example.org"
|
|
47
47
|
|
|
48
48
|
Hawking.work_jobs server
|
|
49
49
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hawking
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.
|
|
4
|
+
version: '0.2'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rogério Zambon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-11-
|
|
11
|
+
date: 2013-11-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: json_pure
|
|
@@ -52,7 +52,7 @@ dependencies:
|
|
|
52
52
|
- - '>='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
|
-
description: Background job queueing using
|
|
55
|
+
description: Background job queueing using TCPSocket. Inspired in the Stalkeg gem.
|
|
56
56
|
email:
|
|
57
57
|
- rogeriozambon@gmail.com
|
|
58
58
|
executables:
|
|
@@ -60,7 +60,6 @@ executables:
|
|
|
60
60
|
extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
|
62
62
|
files:
|
|
63
|
-
- .rspec
|
|
64
63
|
- .travis.yml
|
|
65
64
|
- Gemfile
|
|
66
65
|
- Gemfile.lock
|
|
@@ -74,7 +73,8 @@ files:
|
|
|
74
73
|
- spec/hawking_spec.rb
|
|
75
74
|
- spec/spec_helper.rb
|
|
76
75
|
homepage: http://github.com/rogeriozambon/hawking
|
|
77
|
-
licenses:
|
|
76
|
+
licenses:
|
|
77
|
+
- MIT
|
|
78
78
|
metadata: {}
|
|
79
79
|
post_install_message:
|
|
80
80
|
rdoc_options: []
|
|
@@ -95,5 +95,5 @@ rubyforge_project:
|
|
|
95
95
|
rubygems_version: 2.1.10
|
|
96
96
|
signing_key:
|
|
97
97
|
specification_version: 4
|
|
98
|
-
summary: Background job queueing using
|
|
98
|
+
summary: Background job queueing using TCPSocket. Inspired in the Stalkeg gem.
|
|
99
99
|
test_files: []
|
data/.rspec
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
--color --format documentation
|