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 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
+