kthxbye 1.0.5 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -2
- data/README.textile +58 -0
- data/lib/generators/kthxbye/USAGE +11 -0
- data/lib/generators/kthxbye/kthxbye_generator.rb +51 -0
- data/lib/generators/kthxbye/templates/kthxbye.css +18 -0
- data/lib/generators/kthxbye/templates/kthxbye.js +41 -0
- data/lib/generators/kthxbye/templates/kthxbye_widget.png +0 -0
- data/lib/kthxbye.rb +2 -2
- data/lib/kthxbye/job.rb +3 -0
- data/lib/kthxbye/railtie.rb +18 -0
- data/lib/kthxbye/railties/kthxbye.rake +3 -0
- data/lib/kthxbye/version.rb +1 -1
- data/lib/kthxbye/worker.rb +2 -0
- metadata +41 -141
- data/.document +0 -5
- data/.gitignore +0 -33
- data/Gemfile.lock +0 -28
- data/Rakefile +0 -46
- data/VERSION +0 -1
data/Gemfile
CHANGED
@@ -8,15 +8,14 @@ source "http://rubygems.org"
|
|
8
8
|
group :development do
|
9
9
|
gem "shoulda", ">= 0"
|
10
10
|
gem "bundler", "~> 1.0.0"
|
11
|
-
gem "jeweler", "~> 1.5.0.pre3"
|
12
11
|
gem "rcov", ">= 0"
|
13
12
|
end
|
14
13
|
|
15
14
|
gem "redis"
|
15
|
+
|
16
16
|
begin
|
17
17
|
gem "yajl-ruby"
|
18
18
|
rescue
|
19
19
|
gem "json"
|
20
20
|
end
|
21
21
|
|
22
|
-
gem 'sinatra'
|
data/README.textile
CHANGED
@@ -76,6 +76,64 @@ and then in some other world, on some other machine, (that still has knowledge o
|
|
76
76
|
|
77
77
|
Pretty... damn... simple.
|
78
78
|
|
79
|
+
h2. Installation
|
80
|
+
Installation isn't hard. Simply:
|
81
|
+
|
82
|
+
gem install kthxbye
|
83
|
+
|
84
|
+
or in Rails
|
85
|
+
|
86
|
+
gem "kthxbye"
|
87
|
+
|
88
|
+
and then in your project directory run
|
89
|
+
|
90
|
+
rails g kthxbye
|
91
|
+
|
92
|
+
which will install all of the necessary assets, of which there are three:
|
93
|
+
# public/javascripts/kthxbye.js - a responder that will catch job status message
|
94
|
+
from the worker
|
95
|
+
# public/images/kthxbye_widget.png - a notifier widget to show the status of a
|
96
|
+
job
|
97
|
+
# public/stylesheets/kthxbye.css - styles for the widget
|
98
|
+
|
99
|
+
These can be ignored if you really don't want to have an asynchronus widget to
|
100
|
+
display the job's status to the user in real-time. You can simply use the gem
|
101
|
+
and get the results on your own time.
|
102
|
+
|
103
|
+
If are using the widget however, we depend on "node.js":http://nodejs.org/ to
|
104
|
+
handle the Redis PUBSUB listening and updating and "Socket.io":http://socket.io/
|
105
|
+
to stream the results back to the clients.
|
106
|
+
|
107
|
+
In order to install Socket.io on your application side, run
|
108
|
+
git clone http://github.com/LearnBoost/Socket.IO.git socket-io --recursive
|
109
|
+
|
110
|
+
*Note:* due to the way Rails tries to serve these files and the seemingly
|
111
|
+
conflicting way that Socket.io has hardcoded some paths into the code, you may
|
112
|
+
need to create a symlink to the public/javascripts/socket.io directory in you
|
113
|
+
public directory. This was the easiest solution I found.
|
114
|
+
|
115
|
+
There is a separate node.js client at "github.com/plukevdh/kthxbye-node":http://github.com/plukevdh/kthxbye-node
|
116
|
+
Simply clone the repo or download the poll.js file and set it up to your hearts
|
117
|
+
content. *NOTE:* You will need to configure your ports/redis server in the
|
118
|
+
poll.js file as well as installing socket.io in the same dir as the poll.js file
|
119
|
+
via "git clone git://github.com/LearnBoost/Socket.IO-node.git socket.io-node --recursive"
|
120
|
+
(from the socket.io install instructions http://github.com/LearnBoost/Socket.IO-node)
|
121
|
+
|
122
|
+
|
123
|
+
h2. Troubleshooting
|
124
|
+
h3. The part of the show where I try to save you some trouble
|
125
|
+
|
126
|
+
There are a few things I found along the way that were necessary to make this
|
127
|
+
integration run super smoothly:
|
128
|
+
|
129
|
+
You will need to run node as root user if you want to take advantage of
|
130
|
+
flashsockets.
|
131
|
+
|
132
|
+
You may need to create a link in your public/ dir to socket.io to the install
|
133
|
+
in your public/javascripts/ dir.
|
134
|
+
|
135
|
+
|
136
|
+
|
79
137
|
h2. Note on Patches/Pull Requests
|
80
138
|
|
81
139
|
* Fork the project.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Description:
|
2
|
+
The 'kthxbye' command installs the necessary resource files to your Rails
|
3
|
+
application so that you can use the notification widget and modify any
|
4
|
+
job completion actions for the front-end
|
5
|
+
|
6
|
+
Example:
|
7
|
+
rails g kthxbye:all
|
8
|
+
|
9
|
+
This installs all the resource files (images, javascripts, css files) into
|
10
|
+
the proper locations in your public/ dir.
|
11
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Kthxbye
|
4
|
+
module Generators
|
5
|
+
class KthxbyeGenerator < Rails::Generators::Base
|
6
|
+
|
7
|
+
desc "installs all necessary Kthxbye files for notification widget"
|
8
|
+
|
9
|
+
class_option :js, :type => :boolean, :default => true, :desc => "install javascript files"
|
10
|
+
class_option :img, :type => :boolean, :default => true, :desc => "install widget image"
|
11
|
+
class_option :css, :type => :boolean, :default => true, :desc => "install css files"
|
12
|
+
|
13
|
+
def self.source_root
|
14
|
+
@source_root ||= File.join(File.dirname(__FILE__), 'templates')
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.banner
|
18
|
+
"#{$0} kthxbye #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
|
19
|
+
end
|
20
|
+
|
21
|
+
def install_all
|
22
|
+
install_javascripts
|
23
|
+
install_css
|
24
|
+
install_images
|
25
|
+
install_gems
|
26
|
+
|
27
|
+
puts "Successfully installed Kthxbye resources in public/"
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def install_javascripts
|
33
|
+
copy_file("kthxbye.js", "public/javascripts/kthxbye.js") if options[:js]
|
34
|
+
end
|
35
|
+
|
36
|
+
def install_css
|
37
|
+
copy_file("kthxbye.css", "public/stylesheets/kthxbye.css") if options[:css]
|
38
|
+
end
|
39
|
+
|
40
|
+
def install_images
|
41
|
+
copy_file("kthxbye_widget.png", "public/images/kthxbye_widget.png") if options[:img]
|
42
|
+
end
|
43
|
+
|
44
|
+
def install_gems
|
45
|
+
gem("redis", "~> 2.0.10")
|
46
|
+
gem("yajl-ruby", "~> 0.7.8")
|
47
|
+
gem("kthxbye", "~> #{Kthxbye::Version}")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#kthxbye {
|
2
|
+
height: 41px;
|
3
|
+
width: 124px;
|
4
|
+
background:url('../images/kthxbye_widget.png') no-repeat;
|
5
|
+
margin:10px;
|
6
|
+
}
|
7
|
+
|
8
|
+
#kthxbye.failed {
|
9
|
+
background-position: 0 -120px;
|
10
|
+
}
|
11
|
+
|
12
|
+
#kthxbye.success {
|
13
|
+
background-position: 0 -40px;
|
14
|
+
}
|
15
|
+
|
16
|
+
#kthxbye.active {
|
17
|
+
background-position: 0 -80px;
|
18
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
io.setPath("/javascripts/socket.io/")
|
2
|
+
var socket = new io.Socket('localhost', {port:8081})
|
3
|
+
|
4
|
+
function active() {
|
5
|
+
$('#kthxbye').removeClass("failed success").addClass("active")
|
6
|
+
}
|
7
|
+
|
8
|
+
function failed() {
|
9
|
+
$('#kthxbye').removeClass("active success").addClass("failed")
|
10
|
+
}
|
11
|
+
|
12
|
+
function succeeded() {
|
13
|
+
$('#kthxbye').removeClass("active failed").addClass("success")
|
14
|
+
}
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
if(socket.connect()) {
|
19
|
+
socket.on('message', function(data) {
|
20
|
+
try {
|
21
|
+
var status = JSON.parse(data)
|
22
|
+
} catch (SyntaxError) {
|
23
|
+
return false;
|
24
|
+
}
|
25
|
+
|
26
|
+
if(status.id != parseInt(job_id)) return false;
|
27
|
+
|
28
|
+
if(status.status == 'job.failed') {
|
29
|
+
failed()
|
30
|
+
} else if(status.status == 'job.completed') {
|
31
|
+
succeeded()
|
32
|
+
} else if(status.status == 'job.started') {
|
33
|
+
active()
|
34
|
+
} else {
|
35
|
+
alert('Unknown option! ' + status.status)
|
36
|
+
}
|
37
|
+
|
38
|
+
return false
|
39
|
+
})
|
40
|
+
}
|
41
|
+
|
Binary file
|
data/lib/kthxbye.rb
CHANGED
@@ -6,8 +6,6 @@ rescue
|
|
6
6
|
require 'json'
|
7
7
|
end
|
8
8
|
|
9
|
-
$LOAD_PATH << './lib'
|
10
|
-
|
11
9
|
require 'kthxbye/config'
|
12
10
|
require 'kthxbye/helper'
|
13
11
|
require 'kthxbye/job'
|
@@ -18,6 +16,8 @@ require 'kthxbye/version'
|
|
18
16
|
|
19
17
|
require 'kthxbye/exceptions'
|
20
18
|
|
19
|
+
require 'kthxbye/railtie' if defined?(Rails) && Rails::VERSION::MAJOR == 3
|
20
|
+
|
21
21
|
# Kthxbye is a light-weight, distributed delayed-job processor. It is meant
|
22
22
|
# to take the load of long running processes off of your web-server any place
|
23
23
|
# it in the capable hands of a backend processor. It is unique in that it
|
data/lib/kthxbye/job.rb
CHANGED
@@ -111,6 +111,8 @@ module Kthxbye
|
|
111
111
|
# It will get the jobs class, payload and then run the job, storing the
|
112
112
|
# result in the result's store once complete. Also responsible for reporting
|
113
113
|
# errors and storing the job in the failure listing if an exception occurs.
|
114
|
+
# Will also publish a message on the job.failed channel (Redis PUBSUB) with
|
115
|
+
# the id of the failed job
|
114
116
|
def perform
|
115
117
|
begin
|
116
118
|
@klass = Object.const_get(@data['klass'])
|
@@ -124,6 +126,7 @@ module Kthxbye
|
|
124
126
|
rescue Object => ex
|
125
127
|
@failed_attempts += 1
|
126
128
|
log "Error occured: #{ex.message}. Try: #{@failed_attempts}/#{Kthxbye::Config.options[:attempts]}"
|
129
|
+
redis.publish("job.failed", @id)
|
127
130
|
return Kthxbye::Failure.create( self, ex ) if @failed_attempts >= Kthxbye::Config.options[:attempts]
|
128
131
|
perform
|
129
132
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Rake tasks and integration to Rails
|
2
|
+
# require 'kthxbye'
|
3
|
+
|
4
|
+
module Kthxbye
|
5
|
+
class Railtie < Rails::Railtie
|
6
|
+
|
7
|
+
config.action_view.javascript_expansions[:kthxbye] = %w(socket.io/socket.io.js kthxbye.js)
|
8
|
+
|
9
|
+
initializer "kthxbye.configure_for_rails" do |app|
|
10
|
+
app.config.autoload_paths += %W(kthxbye/css kthxbye/javascripts kthxbye/images)
|
11
|
+
end
|
12
|
+
|
13
|
+
rake_tasks do
|
14
|
+
load "kthxbye/railties/kthxbye.rake"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/kthxbye/version.rb
CHANGED
data/lib/kthxbye/worker.rb
CHANGED
@@ -133,6 +133,7 @@ module Kthxbye
|
|
133
133
|
|
134
134
|
# activates job
|
135
135
|
job.active
|
136
|
+
redis.publish("job.started", job.id)
|
136
137
|
end
|
137
138
|
|
138
139
|
# Is this job working?
|
@@ -145,6 +146,7 @@ module Kthxbye
|
|
145
146
|
redis.srem( :working, self )
|
146
147
|
redis.del( "worker:#{self}" )
|
147
148
|
log "Completed job #{@current_job}"
|
149
|
+
redis.publish("job.completed", @current_job.id)
|
148
150
|
@current_job = nil
|
149
151
|
end
|
150
152
|
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kthxbye
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 29
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
7
|
+
- 1
|
8
8
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.5
|
9
|
+
version: 1.1.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Luke van der Hoeven
|
@@ -15,112 +14,10 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-10-05 00:00:00 -04:00
|
19
18
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
22
|
-
prerelease: false
|
23
|
-
name: redis
|
24
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
requirement: *id001
|
34
|
-
type: :runtime
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
prerelease: false
|
37
|
-
name: yajl-ruby
|
38
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
requirement: *id002
|
48
|
-
type: :runtime
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
prerelease: false
|
51
|
-
name: sinatra
|
52
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
61
|
-
requirement: *id003
|
62
|
-
type: :runtime
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
prerelease: false
|
65
|
-
name: shoulda
|
66
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
|
-
segments:
|
73
|
-
- 0
|
74
|
-
version: "0"
|
75
|
-
requirement: *id004
|
76
|
-
type: :development
|
77
|
-
- !ruby/object:Gem::Dependency
|
78
|
-
prerelease: false
|
79
|
-
name: bundler
|
80
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
hash: 23
|
86
|
-
segments:
|
87
|
-
- 1
|
88
|
-
- 0
|
89
|
-
- 0
|
90
|
-
version: 1.0.0
|
91
|
-
requirement: *id005
|
92
|
-
type: :development
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
prerelease: false
|
95
|
-
name: jeweler
|
96
|
-
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ~>
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
hash: 270495430
|
102
|
-
segments:
|
103
|
-
- 1
|
104
|
-
- 5
|
105
|
-
- 0
|
106
|
-
- pre3
|
107
|
-
version: 1.5.0.pre3
|
108
|
-
requirement: *id006
|
109
|
-
type: :development
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
prerelease: false
|
112
|
-
name: rcov
|
113
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
hash: 3
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
version: "0"
|
122
|
-
requirement: *id007
|
123
|
-
type: :development
|
19
|
+
dependencies: []
|
20
|
+
|
124
21
|
description: "Kthxbye is the answer to a fairly unique-yet-common problem: Background job processing when we care about the result."
|
125
22
|
email: hungerandthirst@gmail.com
|
126
23
|
executables: []
|
@@ -131,46 +28,48 @@ extra_rdoc_files:
|
|
131
28
|
- LICENSE
|
132
29
|
- README.textile
|
133
30
|
files:
|
134
|
-
- .document
|
135
|
-
- .gitignore
|
136
|
-
- DESIGN.textile
|
137
|
-
- Gemfile
|
138
|
-
- Gemfile.lock
|
139
|
-
- LICENSE
|
140
|
-
- README.textile
|
141
|
-
- Rakefile
|
142
|
-
- VERSION
|
143
|
-
- config.ru
|
144
|
-
- lib/kthxbye.rb
|
145
|
-
- lib/kthxbye/config.rb
|
146
|
-
- lib/kthxbye/exceptions.rb
|
147
|
-
- lib/kthxbye/failure.rb
|
148
|
-
- lib/kthxbye/helper.rb
|
149
|
-
- lib/kthxbye/job.rb
|
150
31
|
- lib/kthxbye/version.rb
|
32
|
+
- lib/kthxbye/job.rb
|
33
|
+
- lib/kthxbye/exceptions.rb
|
151
34
|
- lib/kthxbye/web_interface.rb
|
35
|
+
- lib/kthxbye/web_interface/public/jquery.js
|
152
36
|
- lib/kthxbye/web_interface/public/application.js
|
153
37
|
- lib/kthxbye/web_interface/public/awesome-buttons.css
|
154
|
-
- lib/kthxbye/web_interface/public/jquery.js
|
155
38
|
- lib/kthxbye/web_interface/public/style.css
|
156
|
-
- lib/kthxbye/web_interface/views/
|
157
|
-
- lib/kthxbye/web_interface/views/failed.haml
|
39
|
+
- lib/kthxbye/web_interface/views/workers.haml
|
158
40
|
- lib/kthxbye/web_interface/views/hash.haml
|
159
|
-
- lib/kthxbye/web_interface/views/layout.haml
|
160
41
|
- lib/kthxbye/web_interface/views/overview.haml
|
161
|
-
- lib/kthxbye/web_interface/views/
|
42
|
+
- lib/kthxbye/web_interface/views/failed.haml
|
162
43
|
- lib/kthxbye/web_interface/views/set.haml
|
163
|
-
- lib/kthxbye/web_interface/views/stats.haml
|
164
44
|
- lib/kthxbye/web_interface/views/view_backtrace.haml
|
165
|
-
- lib/kthxbye/web_interface/views/
|
45
|
+
- lib/kthxbye/web_interface/views/layout.haml
|
46
|
+
- lib/kthxbye/web_interface/views/queues.haml
|
47
|
+
- lib/kthxbye/web_interface/views/error.haml
|
48
|
+
- lib/kthxbye/web_interface/views/stats.haml
|
166
49
|
- lib/kthxbye/web_interface/views/working.haml
|
50
|
+
- lib/kthxbye/failure.rb
|
51
|
+
- lib/kthxbye/config.rb
|
52
|
+
- lib/kthxbye/railtie.rb
|
53
|
+
- lib/kthxbye/helper.rb
|
167
54
|
- lib/kthxbye/worker.rb
|
168
|
-
-
|
55
|
+
- lib/kthxbye/railties/kthxbye.rake
|
56
|
+
- lib/generators/kthxbye/templates/kthxbye.css
|
57
|
+
- lib/generators/kthxbye/templates/kthxbye_widget.png
|
58
|
+
- lib/generators/kthxbye/templates/kthxbye.js
|
59
|
+
- lib/generators/kthxbye/USAGE
|
60
|
+
- lib/generators/kthxbye/kthxbye_generator.rb
|
61
|
+
- lib/kthxbye.rb
|
62
|
+
- LICENSE
|
63
|
+
- README.textile
|
64
|
+
- DESIGN.textile
|
65
|
+
- config.ru
|
66
|
+
- Gemfile
|
67
|
+
- test/test_kthxbye.rb
|
169
68
|
- test/redis-test.conf
|
170
|
-
- test/test_failure.rb
|
171
69
|
- test/test_helper.rb
|
172
|
-
- test/
|
70
|
+
- test/test_failure.rb
|
173
71
|
- test/test_worker.rb
|
72
|
+
- test/helper.rb
|
174
73
|
has_rdoc: true
|
175
74
|
homepage: http://github.com/plukevdh/kthxbye
|
176
75
|
licenses: []
|
@@ -185,7 +84,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
185
84
|
requirements:
|
186
85
|
- - ">="
|
187
86
|
- !ruby/object:Gem::Version
|
188
|
-
hash: 3
|
189
87
|
segments:
|
190
88
|
- 0
|
191
89
|
version: "0"
|
@@ -194,10 +92,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
92
|
requirements:
|
195
93
|
- - ">="
|
196
94
|
- !ruby/object:Gem::Version
|
197
|
-
hash: 3
|
198
95
|
segments:
|
199
|
-
-
|
200
|
-
|
96
|
+
- 1
|
97
|
+
- 3
|
98
|
+
- 6
|
99
|
+
version: 1.3.6
|
201
100
|
requirements: []
|
202
101
|
|
203
102
|
rubyforge_project:
|
@@ -206,8 +105,9 @@ signing_key:
|
|
206
105
|
specification_version: 3
|
207
106
|
summary: Async processing + results notification
|
208
107
|
test_files:
|
209
|
-
- test/helper.rb
|
210
|
-
- test/test_failure.rb
|
211
|
-
- test/test_helper.rb
|
212
108
|
- test/test_kthxbye.rb
|
109
|
+
- test/redis-test.conf
|
110
|
+
- test/test_helper.rb
|
111
|
+
- test/test_failure.rb
|
213
112
|
- test/test_worker.rb
|
113
|
+
- test/helper.rb
|
data/.document
DELETED
data/.gitignore
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
# rcov generated
|
2
|
-
coverage
|
3
|
-
|
4
|
-
# rdoc generated
|
5
|
-
rdoc
|
6
|
-
|
7
|
-
# yard generated
|
8
|
-
doc
|
9
|
-
.yardoc
|
10
|
-
|
11
|
-
# bundler
|
12
|
-
.bundle
|
13
|
-
|
14
|
-
# jeweler generated
|
15
|
-
pkg
|
16
|
-
## MAC OS
|
17
|
-
.DS_Store
|
18
|
-
|
19
|
-
## TEXTMATE
|
20
|
-
*.tmproj
|
21
|
-
tmtags
|
22
|
-
|
23
|
-
## EMACS
|
24
|
-
*~
|
25
|
-
\#*
|
26
|
-
.\#*
|
27
|
-
|
28
|
-
## VIM
|
29
|
-
*.swp
|
30
|
-
*.swo
|
31
|
-
|
32
|
-
## PROJECT::SPECIFIC
|
33
|
-
*.gemspec
|
data/Gemfile.lock
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
git (1.2.5)
|
5
|
-
jeweler (1.5.0.pre3)
|
6
|
-
bundler (~> 1.0.0)
|
7
|
-
git (>= 1.2.5)
|
8
|
-
rake
|
9
|
-
rack (1.2.1)
|
10
|
-
rake (0.8.7)
|
11
|
-
rcov (0.9.9)
|
12
|
-
redis (2.0.10)
|
13
|
-
shoulda (2.11.3)
|
14
|
-
sinatra (1.0)
|
15
|
-
rack (>= 1.0)
|
16
|
-
yajl-ruby (0.7.7)
|
17
|
-
|
18
|
-
PLATFORMS
|
19
|
-
ruby
|
20
|
-
|
21
|
-
DEPENDENCIES
|
22
|
-
bundler (~> 1.0.0)
|
23
|
-
jeweler (~> 1.5.0.pre3)
|
24
|
-
rcov
|
25
|
-
redis
|
26
|
-
shoulda
|
27
|
-
sinatra
|
28
|
-
yajl-ruby
|
data/Rakefile
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'rake'
|
11
|
-
|
12
|
-
require 'jeweler'
|
13
|
-
Jeweler::Tasks.new do |gem|
|
14
|
-
gem.name = "kthxbye"
|
15
|
-
gem.summary = %Q{Async processing + results notification}
|
16
|
-
gem.description = %Q{Kthxbye is the answer to a fairly unique-yet-common problem: Background job processing when we care about the result.}
|
17
|
-
gem.email = "hungerandthirst@gmail.com"
|
18
|
-
gem.homepage = "http://github.com/plukevdh/kthxbye"
|
19
|
-
gem.authors = ["Luke van der Hoeven"]
|
20
|
-
end
|
21
|
-
Jeweler::RubygemsDotOrgTasks.new
|
22
|
-
require 'rake/testtask'
|
23
|
-
Rake::TestTask.new(:test) do |test|
|
24
|
-
test.libs << 'lib' << 'test'
|
25
|
-
test.pattern = 'test/**/test_*.rb'
|
26
|
-
test.verbose = true
|
27
|
-
end
|
28
|
-
|
29
|
-
require 'rcov/rcovtask'
|
30
|
-
Rcov::RcovTask.new do |test|
|
31
|
-
test.libs << 'test'
|
32
|
-
test.pattern = 'test/**/test_*.rb'
|
33
|
-
test.verbose = true
|
34
|
-
end
|
35
|
-
|
36
|
-
task :default => :test
|
37
|
-
|
38
|
-
require 'rake/rdoctask'
|
39
|
-
Rake::RDocTask.new do |rdoc|
|
40
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
41
|
-
|
42
|
-
rdoc.rdoc_dir = 'rdoc'
|
43
|
-
rdoc.title = "kthxbye #{version}"
|
44
|
-
rdoc.rdoc_files.include('README*')
|
45
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
46
|
-
end
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.0.5
|