resque-noti-failure 0.1.0 → 0.2.0
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.
- data/Gemfile +1 -0
- data/Gemfile.lock +3 -0
- data/README.rdoc +17 -2
- data/Rakefile +1 -3
- data/VERSION +1 -1
- data/lib/resque-noti-failure.rb +1 -0
- data/lib/resque/plugins/noti_failure/configuration.rb +19 -0
- data/lib/resque/plugins/noti_failure/failure.rb +13 -3
- data/lib/resque/plugins/noti_failure/server.rb +36 -39
- data/resque-noti-failure.gemspec +14 -14
- data/test/helper.rb +0 -1
- data/test/test_configuration.rb +14 -0
- data/test/test_failure.rb +9 -1
- data/test/test_server.rb +38 -0
- metadata +140 -153
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -24,6 +24,8 @@ GEM
|
|
24
24
|
rack (1.5.2)
|
25
25
|
rack-protection (1.5.0)
|
26
26
|
rack
|
27
|
+
rack-test (0.6.2)
|
28
|
+
rack (>= 1.0)
|
27
29
|
rake (10.0.4)
|
28
30
|
rdoc (4.0.1)
|
29
31
|
json (~> 1.4)
|
@@ -59,6 +61,7 @@ DEPENDENCIES
|
|
59
61
|
jeweler
|
60
62
|
mocha
|
61
63
|
noti
|
64
|
+
rack-test
|
62
65
|
rdoc
|
63
66
|
resque
|
64
67
|
shoulda
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
== Resque Noti Failure
|
2
2
|
|
3
|
-
Sends resque failure to noti (http://notiapp.com), a tool allowing you to receive
|
3
|
+
Sends resque failure to noti (http://notiapp.com), a tool allowing you to receive notifications directly on you desktop.
|
4
4
|
|
5
5
|
== Installation
|
6
6
|
|
@@ -22,11 +22,26 @@ Before using this gem, you'll need registering your application to noti (https:/
|
|
22
22
|
|
23
23
|
Noti.app = 'your-api-key'
|
24
24
|
|
25
|
-
|
25
|
+
You can configure the way Resque Noti Failure like this :
|
26
|
+
|
27
|
+
Resque::Plugins::NotiFailure::Failure.configure do |config|
|
28
|
+
config.failure_url = 'http://test.host/resque/failure'
|
29
|
+
config.failure_name = 'resque test'
|
30
|
+
config.failure_message = lambda{|payload| payload['class'].to_s}
|
31
|
+
end
|
32
|
+
|
33
|
+
Finally, you have to add a new failure backend to resque (more info about this on https://github.com/resque/resque/wiki/Failure-Backends) :
|
34
|
+
|
35
|
+
require 'resque/failure/multiple'
|
36
|
+
require 'resque/failure/redis'
|
37
|
+
require 'resque/plugins/noti_failure/failure'
|
26
38
|
|
27
39
|
Resque::Failure::Multiple.classes = [Resque::Failure::Redis, Resque::Plugins::NotiFailure::Failure]
|
28
40
|
Resque::Failure.backend = Resque::Failure::Multiple
|
29
41
|
|
42
|
+
== Subscribe to notifications
|
43
|
+
|
44
|
+
Once configured, you can subscribe to failure notifications through resque-web interface.
|
30
45
|
|
31
46
|
== Build status
|
32
47
|
|
data/Rakefile
CHANGED
@@ -17,13 +17,11 @@ Jeweler::Tasks.new do |gem|
|
|
17
17
|
gem.name = "resque-noti-failure"
|
18
18
|
gem.homepage = "https://github.com/jpl/resque-noti-failure"
|
19
19
|
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{Send noti (https://notiapp.com/) notification
|
20
|
+
gem.summary = %Q{Send resque failure to noti (https://notiapp.com/) notification}
|
21
21
|
# gem.description = %Q{TODO: longer description of your gem}
|
22
22
|
gem.email = "jpl@idol.io"
|
23
23
|
gem.authors = ["Jean-Philippe Lecaille"]
|
24
24
|
# dependencies defined in Gemfile
|
25
|
-
gem.add_dependency 'noti'
|
26
|
-
gem.add_dependency 'resque'
|
27
25
|
end
|
28
26
|
Jeweler::RubygemsDotOrgTasks.new
|
29
27
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/resque-noti-failure.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Resque
|
2
|
+
module Plugins
|
3
|
+
module NotiFailure
|
4
|
+
class Configuration
|
5
|
+
attr_accessor :failure_name
|
6
|
+
attr_accessor :failure_url
|
7
|
+
attr_accessor :failure_message
|
8
|
+
|
9
|
+
def failure_name
|
10
|
+
@failure_name ||= 'resque'
|
11
|
+
end
|
12
|
+
|
13
|
+
def failure_message
|
14
|
+
@failure_message ||= Proc.new {|payload| "#{payload['class'].to_s}\n#{payload['args'].inspect}" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -2,6 +2,14 @@ module Resque
|
|
2
2
|
module Plugins
|
3
3
|
module NotiFailure
|
4
4
|
class Failure < Resque::Failure::Base
|
5
|
+
def self.configuration
|
6
|
+
@configuration ||= Resque::Plugins::NotiFailure::Configuration.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.configure
|
10
|
+
yield(configuration)
|
11
|
+
end
|
12
|
+
|
5
13
|
def self.count(queue = nil, class_name = nil)
|
6
14
|
# We can't get the total # of errors from Noti so we fake it
|
7
15
|
# by asking Resque how many errors it has seen.
|
@@ -10,15 +18,17 @@ module Resque
|
|
10
18
|
|
11
19
|
def save
|
12
20
|
notification = ::Noti::Notification.new
|
13
|
-
notification.title =
|
14
|
-
notification.
|
15
|
-
notification.
|
21
|
+
notification.title = Resque::Plugins::NotiFailure::Failure.configuration.failure_name
|
22
|
+
notification.url = Resque::Plugins::NotiFailure::Failure.configuration.failure_url
|
23
|
+
notification.text = Resque::Plugins::NotiFailure::Failure.configuration.failure_message.call(payload)
|
16
24
|
|
17
25
|
Resque.redis.smembers('noti-users').each do |token|
|
18
26
|
begin
|
19
27
|
notification.deliver_to token
|
20
28
|
rescue Noti::Errors::AccessDenied
|
21
29
|
Resque.redis.srem('noti-users', token)
|
30
|
+
rescue => error
|
31
|
+
Resque.logger.warn("Error sending noti failure : #{error.message}")
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -8,52 +8,48 @@ module Resque
|
|
8
8
|
File.join(File.dirname(__FILE__), 'server', 'views', filename)
|
9
9
|
end
|
10
10
|
|
11
|
-
def self.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
get '/noti/confirm' do
|
20
|
-
cookie = request.cookies['noti-request']
|
21
|
-
|
22
|
-
unless cookie.nil?
|
23
|
-
access_token = ::Noti::Token.get_access_token(cookie)
|
24
|
-
Resque.redis.sadd('noti-users', access_token)
|
25
|
-
response.delete_cookie('noti-request')
|
26
|
-
end
|
11
|
+
def self.registered(app)
|
12
|
+
app.get '/noti/subscribe' do
|
13
|
+
token = ::Noti::Token.create_request_token(to('/noti/confirm'))
|
14
|
+
response.set_cookie('noti-request', token.request_token)
|
15
|
+
redirect token.redirect_url
|
16
|
+
end
|
27
17
|
|
28
|
-
|
29
|
-
|
18
|
+
app.get '/noti/confirm' do
|
19
|
+
cookie = request.cookies['noti-request']
|
30
20
|
|
31
|
-
|
32
|
-
|
21
|
+
unless cookie.nil?
|
22
|
+
access_token = ::Noti::Token.get_access_token(cookie)
|
23
|
+
Resque.redis.sadd('noti-users', access_token)
|
24
|
+
response.delete_cookie('noti-request')
|
33
25
|
end
|
34
26
|
|
35
|
-
|
36
|
-
|
27
|
+
redirect url_path('noti')
|
28
|
+
end
|
37
29
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
notification.url = to('/failed')
|
42
|
-
notification.sound = 'alert1'
|
43
|
-
notification.image = 'example'
|
30
|
+
app.get '/noti' do
|
31
|
+
erb File.read(Resque::Plugins::NotiFailure::Server.erb_path('noti.erb'))
|
32
|
+
end
|
44
33
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
34
|
+
app.get '/noti/test' do
|
35
|
+
puts "Failure url : #{Resque::Failure.url}"
|
36
|
+
|
37
|
+
notification = Noti::Notification.new
|
38
|
+
notification.title = 'Test from resque'
|
39
|
+
notification.text = 'Some further information about this notification'
|
40
|
+
notification.url = to('/failed')
|
41
|
+
notification.sound = 'alert1'
|
42
|
+
notification.image = 'example'
|
43
|
+
|
44
|
+
Resque.redis.smembers('noti-users').each do |token|
|
45
|
+
begin
|
46
|
+
notification.deliver_to token
|
47
|
+
rescue Noti::Errors::AccessDenied
|
48
|
+
Resque.redis.srem('noti-users', token)
|
51
49
|
end
|
52
|
-
|
53
|
-
redirect url_path('noti')
|
54
50
|
end
|
55
|
-
|
56
|
-
|
51
|
+
|
52
|
+
redirect url_path('noti')
|
57
53
|
end
|
58
54
|
end
|
59
55
|
end
|
@@ -62,5 +58,6 @@ module Resque
|
|
62
58
|
end
|
63
59
|
|
64
60
|
Resque::Server.class_eval do
|
65
|
-
|
61
|
+
register Resque::Plugins::NotiFailure::Server
|
62
|
+
tabs << 'Noti'
|
66
63
|
end
|
data/resque-noti-failure.gemspec
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = %q{resque-noti-failure}
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jean-Philippe Lecaille"]
|
12
|
-
s.date =
|
13
|
-
s.email =
|
12
|
+
s.date = %q{2013-04-06}
|
13
|
+
s.email = %q{jpl@idol.io}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
16
16
|
"README.rdoc"
|
@@ -25,19 +25,22 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"lib/resque-noti-failure.rb",
|
28
|
+
"lib/resque/plugins/noti_failure/configuration.rb",
|
28
29
|
"lib/resque/plugins/noti_failure/failure.rb",
|
29
30
|
"lib/resque/plugins/noti_failure/server.rb",
|
30
31
|
"lib/resque/plugins/noti_failure/server/views/noti.erb",
|
31
32
|
"resque-noti-failure.gemspec",
|
32
33
|
"test/helper.rb",
|
33
34
|
"test/redis-test.conf",
|
34
|
-
"test/
|
35
|
+
"test/test_configuration.rb",
|
36
|
+
"test/test_failure.rb",
|
37
|
+
"test/test_server.rb"
|
35
38
|
]
|
36
|
-
s.homepage =
|
39
|
+
s.homepage = %q{https://github.com/jpl/resque-noti-failure}
|
37
40
|
s.licenses = ["MIT"]
|
38
41
|
s.require_paths = ["lib"]
|
39
|
-
s.rubygems_version =
|
40
|
-
s.summary =
|
42
|
+
s.rubygems_version = %q{1.5.3}
|
43
|
+
s.summary = %q{Send resque failure to noti (https://notiapp.com/) notification}
|
41
44
|
|
42
45
|
if s.respond_to? :specification_version then
|
43
46
|
s.specification_version = 3
|
@@ -50,8 +53,7 @@ Gem::Specification.new do |s|
|
|
50
53
|
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
51
54
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
52
55
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
53
|
-
s.
|
54
|
-
s.add_runtime_dependency(%q<resque>, [">= 0"])
|
56
|
+
s.add_development_dependency(%q<rack-test>, [">= 0"])
|
55
57
|
else
|
56
58
|
s.add_dependency(%q<noti>, [">= 0"])
|
57
59
|
s.add_dependency(%q<resque>, [">= 0"])
|
@@ -60,8 +62,7 @@ Gem::Specification.new do |s|
|
|
60
62
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
61
63
|
s.add_dependency(%q<bundler>, [">= 0"])
|
62
64
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
63
|
-
s.add_dependency(%q<
|
64
|
-
s.add_dependency(%q<resque>, [">= 0"])
|
65
|
+
s.add_dependency(%q<rack-test>, [">= 0"])
|
65
66
|
end
|
66
67
|
else
|
67
68
|
s.add_dependency(%q<noti>, [">= 0"])
|
@@ -71,8 +72,7 @@ Gem::Specification.new do |s|
|
|
71
72
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
72
73
|
s.add_dependency(%q<bundler>, [">= 0"])
|
73
74
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
74
|
-
s.add_dependency(%q<
|
75
|
-
s.add_dependency(%q<resque>, [">= 0"])
|
75
|
+
s.add_dependency(%q<rack-test>, [">= 0"])
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
data/test/helper.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestConfiguration < Test::Unit::TestCase
|
4
|
+
should "configure failure url" do
|
5
|
+
configuration = Resque::Plugins::NotiFailure::Failure.configuration
|
6
|
+
configuration.expects(:failure_url=).with('http://test.host/resque/failure')
|
7
|
+
configuration.expects(:failure_name=).with('resque test')
|
8
|
+
|
9
|
+
Resque::Plugins::NotiFailure::Failure.configure do |config|
|
10
|
+
config.failure_url = 'http://test.host/resque/failure'
|
11
|
+
config.failure_name = 'resque test'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/test/test_failure.rb
CHANGED
@@ -3,6 +3,12 @@ require 'helper'
|
|
3
3
|
class TestFailure < Test::Unit::TestCase
|
4
4
|
context "Noti" do
|
5
5
|
setup do
|
6
|
+
Resque::Plugins::NotiFailure::Failure.configure do |config|
|
7
|
+
config.failure_url = 'http://test.host/resque/failure'
|
8
|
+
config.failure_name = 'resque test'
|
9
|
+
config.failure_message = lambda{|payload| "Resque error : #{payload['class'].to_s}"}
|
10
|
+
end
|
11
|
+
|
6
12
|
Resque.redis.sadd('noti-users', 'user1')
|
7
13
|
Resque.redis.sadd('noti-users', 'user2')
|
8
14
|
end
|
@@ -13,7 +19,9 @@ class TestFailure < Test::Unit::TestCase
|
|
13
19
|
queue = "test"
|
14
20
|
payload = {'class' => Object, 'args' => 66}
|
15
21
|
|
16
|
-
::Noti::Notification.any_instance.expects(:
|
22
|
+
::Noti::Notification.any_instance.expects(:title=).with('resque test')
|
23
|
+
::Noti::Notification.any_instance.expects(:url=).with('http://test.host/resque/failure')
|
24
|
+
::Noti::Notification.any_instance.expects(:text=).with('Resque error : Object')
|
17
25
|
::Noti::Notification.any_instance.expects(:deliver_to).twice.with(any_of('user1', 'user2'))
|
18
26
|
|
19
27
|
backend = Resque::Plugins::NotiFailure::Failure.new(exception, worker, queue, payload)
|
data/test/test_server.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'rack/test'
|
3
|
+
|
4
|
+
ENV['RACK_ENV'] = 'test'
|
5
|
+
|
6
|
+
class TestServer < Test::Unit::TestCase
|
7
|
+
include Rack::Test::Methods
|
8
|
+
|
9
|
+
def setup
|
10
|
+
Noti.app = 'fake-noti-app-id'
|
11
|
+
end
|
12
|
+
|
13
|
+
def app
|
14
|
+
Resque::Server
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_it_get_index
|
18
|
+
get '/noti'
|
19
|
+
assert last_response.ok?
|
20
|
+
assert_match 'Subscribe', last_response.body
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_it_subscribe
|
24
|
+
object = mock('noti-request-token')
|
25
|
+
object.expects(:request_token).returns('fake-token-id')
|
26
|
+
object.expects(:redirect_url).returns('http//notiapp.com/subscribe')
|
27
|
+
|
28
|
+
::Noti::Token.expects(:create_request_token).returns(object)
|
29
|
+
get '/noti/subscribe'
|
30
|
+
assert last_response.redirect?
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_it_confirm
|
34
|
+
get '/noti/confirm'
|
35
|
+
assert last_response.redirect?
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
metadata
CHANGED
@@ -1,168 +1,145 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-noti-failure
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Jean-Philippe Lecaille
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
17
|
+
|
18
|
+
date: 2013-04-06 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
22
|
type: :runtime
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
name: noti
|
33
|
+
version_requirements: *id001
|
23
34
|
prerelease: false
|
24
|
-
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: resque
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
35
|
+
- !ruby/object:Gem::Dependency
|
38
36
|
type: :runtime
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
name: resque
|
47
|
+
version_requirements: *id002
|
39
48
|
prerelease: false
|
40
|
-
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: shoulda
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
49
|
+
- !ruby/object:Gem::Dependency
|
54
50
|
type: :development
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
name: shoulda
|
61
|
+
version_requirements: *id003
|
55
62
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: mocha
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ! '>='
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
70
64
|
type: :development
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
name: mocha
|
75
|
+
version_requirements: *id004
|
71
76
|
prerelease: false
|
72
|
-
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rdoc
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
77
|
+
- !ruby/object:Gem::Dependency
|
86
78
|
type: :development
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
name: rdoc
|
89
|
+
version_requirements: *id005
|
87
90
|
prerelease: false
|
88
|
-
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: bundler
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
91
|
+
- !ruby/object:Gem::Dependency
|
102
92
|
type: :development
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
hash: 3
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
name: bundler
|
103
|
+
version_requirements: *id006
|
103
104
|
prerelease: false
|
104
|
-
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: jeweler
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
105
|
+
- !ruby/object:Gem::Dependency
|
118
106
|
type: :development
|
107
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
hash: 3
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
116
|
+
name: jeweler
|
117
|
+
version_requirements: *id007
|
119
118
|
prerelease: false
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
- !ruby/object:Gem::
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
version: '0'
|
134
|
-
type: :runtime
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: resque
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ! '>='
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '0'
|
150
|
-
type: :runtime
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
type: :development
|
121
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
hash: 3
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
version: "0"
|
130
|
+
name: rack-test
|
131
|
+
version_requirements: *id008
|
151
132
|
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
158
133
|
description:
|
159
134
|
email: jpl@idol.io
|
160
135
|
executables: []
|
136
|
+
|
161
137
|
extensions: []
|
162
|
-
|
138
|
+
|
139
|
+
extra_rdoc_files:
|
163
140
|
- LICENSE.txt
|
164
141
|
- README.rdoc
|
165
|
-
files:
|
142
|
+
files:
|
166
143
|
- .document
|
167
144
|
- .travis.yml
|
168
145
|
- Gemfile
|
@@ -172,39 +149,49 @@ files:
|
|
172
149
|
- Rakefile
|
173
150
|
- VERSION
|
174
151
|
- lib/resque-noti-failure.rb
|
152
|
+
- lib/resque/plugins/noti_failure/configuration.rb
|
175
153
|
- lib/resque/plugins/noti_failure/failure.rb
|
176
154
|
- lib/resque/plugins/noti_failure/server.rb
|
177
155
|
- lib/resque/plugins/noti_failure/server/views/noti.erb
|
178
156
|
- resque-noti-failure.gemspec
|
179
157
|
- test/helper.rb
|
180
158
|
- test/redis-test.conf
|
159
|
+
- test/test_configuration.rb
|
181
160
|
- test/test_failure.rb
|
161
|
+
- test/test_server.rb
|
162
|
+
has_rdoc: true
|
182
163
|
homepage: https://github.com/jpl/resque-noti-failure
|
183
|
-
licenses:
|
164
|
+
licenses:
|
184
165
|
- MIT
|
185
166
|
post_install_message:
|
186
167
|
rdoc_options: []
|
187
|
-
|
168
|
+
|
169
|
+
require_paths:
|
188
170
|
- lib
|
189
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
171
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
190
172
|
none: false
|
191
|
-
requirements:
|
192
|
-
- -
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
|
195
|
-
segments:
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
hash: 3
|
177
|
+
segments:
|
196
178
|
- 0
|
197
|
-
|
198
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
version: "0"
|
180
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
181
|
none: false
|
200
|
-
requirements:
|
201
|
-
- -
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
hash: 3
|
186
|
+
segments:
|
187
|
+
- 0
|
188
|
+
version: "0"
|
204
189
|
requirements: []
|
190
|
+
|
205
191
|
rubyforge_project:
|
206
|
-
rubygems_version: 1.
|
192
|
+
rubygems_version: 1.5.3
|
207
193
|
signing_key:
|
208
194
|
specification_version: 3
|
209
|
-
summary: Send noti (https://notiapp.com/) notification
|
195
|
+
summary: Send resque failure to noti (https://notiapp.com/) notification
|
210
196
|
test_files: []
|
197
|
+
|