resque-noti-failure 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -15,5 +15,6 @@ group :development do
15
15
  gem "rdoc"
16
16
  gem "bundler"
17
17
  gem "jeweler"
18
+ gem "rack-test"
18
19
  end
19
20
 
@@ -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
@@ -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 job failure directly on you desktop.
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
- Then you need to add a new failure backend to resque (more info about this on https://github.com/resque/resque/wiki/Failure-Backends) :
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 from resque failure}
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
1
+ 0.2.0
@@ -4,6 +4,7 @@ require 'resque'
4
4
  module Resque
5
5
  module Plugins
6
6
  module NotiFailure
7
+ require 'resque/plugins/noti_failure/configuration'
7
8
  require 'resque/plugins/noti_failure/server'
8
9
  require 'resque/plugins/noti_failure/failure'
9
10
  end
@@ -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 = 'resque'
14
- notification.text = "#{payload['class'].to_s}\n#{payload['args'].inspect}"
15
- notification.url = Resque::Failure.url
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.included(base)
12
- base.class_eval do
13
- get '/noti/subscribe' do
14
- token = ::Noti::Token.create_request_token(to('/noti/confirm'))
15
- response.set_cookie('noti-request', token.request_token)
16
- redirect token.redirect_url
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
- redirect url_path('noti')
29
- end
18
+ app.get '/noti/confirm' do
19
+ cookie = request.cookies['noti-request']
30
20
 
31
- get '/noti' do
32
- erb File.read(Resque::Plugins::NotiFailure::Server.erb_path('noti.erb'))
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
- get '/noti/test' do
36
- puts "Failure url : #{Resque::Failure.url}"
27
+ redirect url_path('noti')
28
+ end
37
29
 
38
- notification = Noti::Notification.new
39
- notification.title = 'Test from resque'
40
- notification.text = 'Some further information about this notification'
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
- Resque.redis.smembers('noti-users').each do |token|
46
- begin
47
- notification.deliver_to token
48
- rescue Noti::Errors::AccessDenied
49
- Resque.redis.srem('noti-users', token)
50
- end
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
- Resque::Server.tabs << 'Noti'
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
- include Resque::Plugins::NotiFailure::Server
61
+ register Resque::Plugins::NotiFailure::Server
62
+ tabs << 'Noti'
66
63
  end
@@ -4,13 +4,13 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "resque-noti-failure"
8
- s.version = "0.1.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 = "2013-03-31"
13
- s.email = "jpl@idol.io"
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/test_failure.rb"
35
+ "test/test_configuration.rb",
36
+ "test/test_failure.rb",
37
+ "test/test_server.rb"
35
38
  ]
36
- s.homepage = "https://github.com/jpl/resque-noti-failure"
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 = "1.8.25"
40
- s.summary = "Send noti (https://notiapp.com/) notification from resque failure"
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.add_runtime_dependency(%q<noti>, [">= 0"])
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<noti>, [">= 0"])
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<noti>, [">= 0"])
75
- s.add_dependency(%q<resque>, [">= 0"])
75
+ s.add_dependency(%q<rack-test>, [">= 0"])
76
76
  end
77
77
  end
78
78
 
@@ -42,7 +42,6 @@ unless ENV['TRAVIS']
42
42
 
43
43
  pid = `ps -A -o pid,command | grep [r]edis-test`.split(" ")[0]
44
44
  puts "Killing test redis server..."
45
- `rm -f #{dir}/dump.rdb`
46
45
  Process.kill("KILL", pid.to_i)
47
46
  exit exit_code
48
47
  end
@@ -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
@@ -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(:text=).with(regexp_matches(/Object/))
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)
@@ -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
- version: 0.1.0
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
- date: 2013-03-31 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: noti
16
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: noti
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
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
- extra_rdoc_files:
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
- require_paths:
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
- version: '0'
195
- segments:
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ hash: 3
177
+ segments:
196
178
  - 0
197
- hash: 2017228891349398639
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
- version: '0'
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.8.25
192
+ rubygems_version: 1.5.3
207
193
  signing_key:
208
194
  specification_version: 3
209
- summary: Send noti (https://notiapp.com/) notification from resque failure
195
+ summary: Send resque failure to noti (https://notiapp.com/) notification
210
196
  test_files: []
197
+