daemon-kit 0.1.8.1 → 0.1.8.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.
- data/.gitignore +16 -4
- data/Gemfile +4 -0
- data/History.txt +8 -0
- data/README.rdoc +3 -3
- data/Rakefile +3 -25
- data/Upgrading.md +21 -0
- data/bin/daemon-kit +1 -1
- data/daemon-kit.gemspec +36 -256
- data/lib/daemon_kit.rb +2 -2
- data/lib/daemon_kit/arguments.rb +3 -3
- data/lib/daemon_kit/commands/console.rb +1 -1
- data/lib/daemon_kit/deployment/capistrano.rb +7 -39
- data/lib/daemon_kit/dk_amqp.rb +1 -1
- data/lib/daemon_kit/initializer.rb +14 -37
- data/lib/daemon_kit/ruote_participants.rb +9 -2
- data/lib/daemon_kit/ruote_workitem.rb +6 -6
- data/lib/daemon_kit/version.rb +6 -0
- data/lib/generators/daemon_kit/amqp/templates/config/pre-daemonize/amqp.rb +0 -1
- data/lib/generators/daemon_kit/amqp/templates/libexec/%app_name%-daemon.rb +1 -1
- data/lib/generators/daemon_kit/app/templates/Gemfile +5 -0
- data/lib/generators/daemon_kit/app/templates/config/boot.rb +2 -8
- data/lib/generators/daemon_kit/app/templates/config/environment.rb.tt +0 -4
- data/lib/generators/daemon_kit/app/templates/config/pre-daemonize/safely.rb +13 -0
- data/lib/generators/daemon_kit/capistrano/templates/config/deploy.rb.tt +5 -4
- data/lib/generators/daemon_kit/ruote/templates/config/pre-daemonize/ruote.rb +0 -1
- data/spec/initializer_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -3
- data/tasks/rspec.rake +5 -6
- metadata +123 -49
- data/lib/daemon_kit/error_handlers/base.rb +0 -32
- data/lib/daemon_kit/error_handlers/hoptoad.rb +0 -180
- data/lib/daemon_kit/safety.rb +0 -84
- data/spec/error_handlers_spec.rb +0 -23
data/spec/initializer_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
|
3
|
-
require 'spec'
|
2
|
+
require 'rspec'
|
4
3
|
|
5
4
|
require 'mocha'
|
6
5
|
require 'fileutils'
|
@@ -11,7 +10,7 @@ DAEMON_ROOT = "#{File.dirname(__FILE__)}/../tmp"
|
|
11
10
|
$:.unshift( File.dirname(__FILE__) + '/../lib' )
|
12
11
|
require 'daemon_kit'
|
13
12
|
|
14
|
-
|
13
|
+
RSpec.configure do |config|
|
15
14
|
# == Mock Framework
|
16
15
|
#
|
17
16
|
# RSpec uses it's own mocking framework by default. If you prefer to
|
data/tasks/rspec.rake
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
begin
|
2
|
-
require '
|
2
|
+
require 'rspec'
|
3
3
|
rescue LoadError
|
4
4
|
require 'rubygems'
|
5
|
-
require '
|
5
|
+
require 'rspec'
|
6
6
|
end
|
7
7
|
begin
|
8
|
-
require '
|
8
|
+
require 'rspec/core/rake_task'
|
9
9
|
|
10
10
|
desc "Run the specs under spec/models"
|
11
|
-
|
12
|
-
t.
|
13
|
-
t.spec_files = FileList['spec/**/*_spec.rb']
|
11
|
+
RSpec::Core::RakeTask.new do |t|
|
12
|
+
t.rspec_opts = ['--options', "spec/spec.opts"]
|
14
13
|
end
|
15
14
|
rescue LoadError
|
16
15
|
puts <<-EOS
|
metadata
CHANGED
@@ -1,44 +1,53 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daemon-kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 99
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
9
|
- 8
|
10
|
-
-
|
11
|
-
version: 0.1.8.
|
10
|
+
- 2
|
11
|
+
version: 0.1.8.2
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
|
-
-
|
14
|
+
- Kenneth Kalmer
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date:
|
20
|
-
default_executable: daemon-kit
|
19
|
+
date: 2011-10-30 00:00:00 Z
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
23
|
-
|
24
|
-
prerelease: false
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
23
|
none: false
|
27
24
|
requirements:
|
28
25
|
- - ">="
|
29
26
|
- !ruby/object:Gem::Version
|
30
|
-
hash:
|
27
|
+
hash: 3
|
31
28
|
segments:
|
32
29
|
- 0
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
type: :
|
37
|
-
|
30
|
+
version: "0"
|
31
|
+
prerelease: false
|
32
|
+
requirement: *id001
|
33
|
+
type: :development
|
34
|
+
name: bundler
|
38
35
|
- !ruby/object:Gem::Dependency
|
39
|
-
|
36
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
hash: 3
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
version: "0"
|
40
45
|
prerelease: false
|
41
|
-
requirement:
|
46
|
+
requirement: *id002
|
47
|
+
type: :development
|
48
|
+
name: rake
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
42
51
|
none: false
|
43
52
|
requirements:
|
44
53
|
- - ">="
|
@@ -47,12 +56,59 @@ dependencies:
|
|
47
56
|
segments:
|
48
57
|
- 0
|
49
58
|
version: "0"
|
59
|
+
prerelease: false
|
60
|
+
requirement: *id003
|
61
|
+
type: :development
|
62
|
+
name: rdoc
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
hash: 15
|
70
|
+
segments:
|
71
|
+
- 2
|
72
|
+
- 6
|
73
|
+
version: "2.6"
|
74
|
+
prerelease: false
|
75
|
+
requirement: *id004
|
50
76
|
type: :development
|
51
|
-
|
77
|
+
name: rspec
|
52
78
|
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ~>
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 55
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
- 10
|
88
|
+
- 0
|
89
|
+
version: 0.10.0
|
90
|
+
prerelease: false
|
91
|
+
requirement: *id005
|
92
|
+
type: :development
|
53
93
|
name: cucumber
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ~>
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 35
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
- 9
|
104
|
+
- 12
|
105
|
+
version: 0.9.12
|
54
106
|
prerelease: false
|
55
|
-
requirement:
|
107
|
+
requirement: *id006
|
108
|
+
type: :development
|
109
|
+
name: mocha
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
56
112
|
none: false
|
57
113
|
requirements:
|
58
114
|
- - ">="
|
@@ -61,10 +117,45 @@ dependencies:
|
|
61
117
|
segments:
|
62
118
|
- 0
|
63
119
|
version: "0"
|
120
|
+
prerelease: false
|
121
|
+
requirement: *id007
|
64
122
|
type: :development
|
65
|
-
|
123
|
+
name: SyslogLogger
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
hash: 59
|
131
|
+
segments:
|
132
|
+
- 0
|
133
|
+
- 12
|
134
|
+
- 10
|
135
|
+
version: 0.12.10
|
136
|
+
prerelease: false
|
137
|
+
requirement: *id008
|
138
|
+
type: :runtime
|
139
|
+
name: eventmachine
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
hash: 17
|
147
|
+
segments:
|
148
|
+
- 0
|
149
|
+
- 3
|
150
|
+
- 1
|
151
|
+
version: 0.3.1
|
152
|
+
prerelease: false
|
153
|
+
requirement: *id009
|
154
|
+
type: :runtime
|
155
|
+
name: safely
|
66
156
|
description: daemon-kit aims to simplify creating Ruby daemons by providing a sound application skeleton (through a generator), task specific generators (jabber bot, etc) and robust environment management code.
|
67
|
-
email:
|
157
|
+
email:
|
158
|
+
- kenneth.kalmer@gmail.com
|
68
159
|
executables:
|
69
160
|
- daemon-kit
|
70
161
|
extensions: []
|
@@ -82,6 +173,8 @@ files:
|
|
82
173
|
- .gitignore
|
83
174
|
- Configuration.txt
|
84
175
|
- Deployment.txt
|
176
|
+
- Gemfile
|
177
|
+
- Gemfile.lock
|
85
178
|
- History.txt
|
86
179
|
- Logging.txt
|
87
180
|
- PostInstall.txt
|
@@ -89,6 +182,7 @@ files:
|
|
89
182
|
- Rakefile
|
90
183
|
- RuoteParticipants.txt
|
91
184
|
- TODO.txt
|
185
|
+
- Upgrading.md
|
92
186
|
- bin/daemon-kit
|
93
187
|
- config/website.yml
|
94
188
|
- daemon-kit.gemspec
|
@@ -109,8 +203,6 @@ files:
|
|
109
203
|
- lib/daemon_kit/deployment/capistrano.rb
|
110
204
|
- lib/daemon_kit/dk_amqp.rb
|
111
205
|
- lib/daemon_kit/em.rb
|
112
|
-
- lib/daemon_kit/error_handlers/base.rb
|
113
|
-
- lib/daemon_kit/error_handlers/hoptoad.rb
|
114
206
|
- lib/daemon_kit/exceptions.rb
|
115
207
|
- lib/daemon_kit/generators.rb
|
116
208
|
- lib/daemon_kit/generators/base.rb
|
@@ -122,7 +214,6 @@ files:
|
|
122
214
|
- lib/daemon_kit/ruote_participants.rb
|
123
215
|
- lib/daemon_kit/ruote_pseudo_participant.rb
|
124
216
|
- lib/daemon_kit/ruote_workitem.rb
|
125
|
-
- lib/daemon_kit/safety.rb
|
126
217
|
- lib/daemon_kit/tasks.rb
|
127
218
|
- lib/daemon_kit/tasks/environment.rake
|
128
219
|
- lib/daemon_kit/tasks/framework.rake
|
@@ -160,6 +251,7 @@ files:
|
|
160
251
|
- lib/daemon_kit/vendor/thor-0.13.6/lib/thor/task.rb
|
161
252
|
- lib/daemon_kit/vendor/thor-0.13.6/lib/thor/util.rb
|
162
253
|
- lib/daemon_kit/vendor/thor-0.13.6/lib/thor/version.rb
|
254
|
+
- lib/daemon_kit/version.rb
|
163
255
|
- lib/daemon_kit/xmpp.rb
|
164
256
|
- lib/generators/daemon_kit/amqp/USAGE
|
165
257
|
- lib/generators/daemon_kit/amqp/amqp_generator.rb
|
@@ -180,6 +272,7 @@ files:
|
|
180
272
|
- lib/generators/daemon_kit/app/templates/config/environments/test.rb
|
181
273
|
- lib/generators/daemon_kit/app/templates/config/post-daemonize/readme
|
182
274
|
- lib/generators/daemon_kit/app/templates/config/pre-daemonize/readme
|
275
|
+
- lib/generators/daemon_kit/app/templates/config/pre-daemonize/safely.rb
|
183
276
|
- lib/generators/daemon_kit/app/templates/lib/%app_name%.rb
|
184
277
|
- lib/generators/daemon_kit/app/templates/libexec/%app_name%-daemon.rb
|
185
278
|
- lib/generators/daemon_kit/app/templates/script/console
|
@@ -242,7 +335,6 @@ files:
|
|
242
335
|
- spec/config_spec.rb
|
243
336
|
- spec/configurable_spec.rb
|
244
337
|
- spec/daemon_kit_spec.rb
|
245
|
-
- spec/error_handlers_spec.rb
|
246
338
|
- spec/fixtures/env.yml
|
247
339
|
- spec/fixtures/noenv.yml
|
248
340
|
- spec/initializer_spec.rb
|
@@ -263,7 +355,6 @@ files:
|
|
263
355
|
- test/test_nanite_agent_generator.rb
|
264
356
|
- test/test_ruote_generator.rb
|
265
357
|
- test/test_test_unit_generator.rb
|
266
|
-
has_rdoc: true
|
267
358
|
homepage: http://github.com/kennethkalmer/daemon-kit
|
268
359
|
licenses: []
|
269
360
|
|
@@ -274,8 +365,8 @@ post_install_message: |+
|
|
274
365
|
To get started quickly run 'daemon-kit' without any arguments
|
275
366
|
|
276
367
|
|
277
|
-
rdoc_options:
|
278
|
-
|
368
|
+
rdoc_options: []
|
369
|
+
|
279
370
|
require_paths:
|
280
371
|
- lib
|
281
372
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -299,26 +390,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
299
390
|
requirements: []
|
300
391
|
|
301
392
|
rubyforge_project:
|
302
|
-
rubygems_version: 1.
|
393
|
+
rubygems_version: 1.8.11
|
303
394
|
signing_key:
|
304
395
|
specification_version: 3
|
305
396
|
summary: Opinionated framework for Ruby daemons
|
306
|
-
test_files:
|
307
|
-
|
308
|
-
- spec/argument_spec.rb
|
309
|
-
- spec/config_spec.rb
|
310
|
-
- spec/configurable_spec.rb
|
311
|
-
- spec/daemon_kit_spec.rb
|
312
|
-
- spec/error_handlers_spec.rb
|
313
|
-
- spec/initializer_spec.rb
|
314
|
-
- spec/spec_helper.rb
|
315
|
-
- test/test_amqp_generator.rb
|
316
|
-
- test/test_cron_generator.rb
|
317
|
-
- test/test_daemon-kit_generator.rb
|
318
|
-
- test/test_daemon_kit_config.rb
|
319
|
-
- test/test_deploy_capistrano_generator.rb
|
320
|
-
- test/test_generator_helper.rb
|
321
|
-
- test/test_helper.rb
|
322
|
-
- test/test_nanite_agent_generator.rb
|
323
|
-
- test/test_ruote_generator.rb
|
324
|
-
- test/test_test_unit_generator.rb
|
397
|
+
test_files: []
|
398
|
+
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module DaemonKit
|
2
|
-
module ErrorHandlers
|
3
|
-
# Error handlers in DaemonKit are used by the #Safety class. Any
|
4
|
-
# error handler has to support the interface provided by this
|
5
|
-
# class. It's also required that safety handlers implement a
|
6
|
-
# singleton approach (handled by default by #Base).
|
7
|
-
class Base
|
8
|
-
|
9
|
-
class << self
|
10
|
-
|
11
|
-
@instance = nil
|
12
|
-
|
13
|
-
def instance
|
14
|
-
@instance ||= new
|
15
|
-
end
|
16
|
-
private :new
|
17
|
-
|
18
|
-
# When we're inherited, immediately register the handler with
|
19
|
-
# the safety net
|
20
|
-
def inherited( child ) #:nodoc:
|
21
|
-
Safety.register_error_handler( child )
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Error handlers should overwrite this method and implement
|
26
|
-
# their own reporting method.
|
27
|
-
def handle_exception( exception )
|
28
|
-
raise NoMethodError, "Error handler doesn't support #handle_exception"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,180 +0,0 @@
|
|
1
|
-
require 'net/http'
|
2
|
-
|
3
|
-
module DaemonKit
|
4
|
-
module ErrorHandlers
|
5
|
-
# Error reporting via Hoptoad.
|
6
|
-
class Hoptoad < Base
|
7
|
-
|
8
|
-
# Front end to parsing the backtrace for each notice
|
9
|
-
# (Graciously borrowed from http://github.com/thoughtbot/hoptoad_notifier)
|
10
|
-
class Backtrace
|
11
|
-
|
12
|
-
# Handles backtrace parsing line by line
|
13
|
-
# (Graciously borrowed from http://github.com/thoughtbot/hoptoad_notifier)
|
14
|
-
class Line
|
15
|
-
|
16
|
-
INPUT_FORMAT = %r{^([^:]+):(\d+)(?::in `([^']+)')?$}.freeze
|
17
|
-
|
18
|
-
# The file portion of the line (such as app/models/user.rb)
|
19
|
-
attr_reader :file
|
20
|
-
|
21
|
-
# The line number portion of the line
|
22
|
-
attr_reader :number
|
23
|
-
|
24
|
-
# The method of the line (such as index)
|
25
|
-
attr_reader :method
|
26
|
-
|
27
|
-
# Parses a single line of a given backtrace
|
28
|
-
# @param [String] unparsed_line The raw line from +caller+ or some backtrace
|
29
|
-
# @return [Line] The parsed backtrace line
|
30
|
-
def self.parse(unparsed_line)
|
31
|
-
_, file, number, method = unparsed_line.match(INPUT_FORMAT).to_a
|
32
|
-
new(file, number, method)
|
33
|
-
end
|
34
|
-
|
35
|
-
def initialize(file, number, method)
|
36
|
-
self.file = file
|
37
|
-
self.number = number
|
38
|
-
self.method = method
|
39
|
-
end
|
40
|
-
|
41
|
-
# Reconstructs the line in a readable fashion
|
42
|
-
def to_s
|
43
|
-
"#{file}:#{number}:in `#{method}'"
|
44
|
-
end
|
45
|
-
|
46
|
-
def ==(other)
|
47
|
-
to_s == other.to_s
|
48
|
-
end
|
49
|
-
|
50
|
-
def inspect
|
51
|
-
"<Line:#{to_s}>"
|
52
|
-
end
|
53
|
-
|
54
|
-
def to_xml
|
55
|
-
data = [ method, file, number ].map { |s| URI.escape( s || 'unknown', %q{"'<>&} ) }
|
56
|
-
%q{<line method="%s" file="%s" number="%s" />} % data
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
|
-
attr_writer :file, :number, :method
|
62
|
-
end
|
63
|
-
|
64
|
-
# holder for an Array of Backtrace::Line instances
|
65
|
-
attr_reader :lines
|
66
|
-
|
67
|
-
def self.parse(ruby_backtrace, opts = {})
|
68
|
-
ruby_lines = split_multiline_backtrace(ruby_backtrace)
|
69
|
-
|
70
|
-
filters = opts[:filters] || []
|
71
|
-
filtered_lines = ruby_lines.to_a.map do |line|
|
72
|
-
filters.inject(line) do |line, proc|
|
73
|
-
proc.call(line)
|
74
|
-
end
|
75
|
-
end.compact
|
76
|
-
|
77
|
-
lines = filtered_lines.collect do |unparsed_line|
|
78
|
-
Line.parse(unparsed_line)
|
79
|
-
end
|
80
|
-
|
81
|
-
instance = new(lines)
|
82
|
-
end
|
83
|
-
|
84
|
-
def initialize(lines)
|
85
|
-
self.lines = lines
|
86
|
-
end
|
87
|
-
|
88
|
-
def inspect
|
89
|
-
"<Backtrace: " + lines.collect { |line| line.inspect }.join(", ") + ">"
|
90
|
-
end
|
91
|
-
|
92
|
-
def ==(other)
|
93
|
-
if other.respond_to?(:lines)
|
94
|
-
lines == other.lines
|
95
|
-
else
|
96
|
-
false
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
private
|
101
|
-
|
102
|
-
attr_writer :lines
|
103
|
-
|
104
|
-
def self.split_multiline_backtrace(backtrace)
|
105
|
-
if backtrace.to_a.size == 1
|
106
|
-
backtrace.to_a.first.split(/\n\s*/)
|
107
|
-
else
|
108
|
-
backtrace
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
# Your hoptoad API key
|
114
|
-
@api_key = nil
|
115
|
-
attr_accessor :api_key
|
116
|
-
|
117
|
-
def handle_exception( exception )
|
118
|
-
headers = {
|
119
|
-
'Content-type' => 'text/xml',
|
120
|
-
'Accept' => 'text/xml, application/xml'
|
121
|
-
}
|
122
|
-
|
123
|
-
http = Net::HTTP.new( url.host, url.port )
|
124
|
-
data = format_exception( exception )
|
125
|
-
DaemonKit.logger.debug("Sending to Hoptoad: #{data}")
|
126
|
-
|
127
|
-
response = begin
|
128
|
-
http.post( url.path, data, headers )
|
129
|
-
rescue TimeoutError => e
|
130
|
-
DaemonKit.logger.error("Timeout while contacting the Hoptoad server.")
|
131
|
-
nil
|
132
|
-
end
|
133
|
-
case response
|
134
|
-
when Net::HTTPSuccess then
|
135
|
-
DaemonKit.logger.info "Hoptoad Success: #{response.class}"
|
136
|
-
else
|
137
|
-
DaemonKit.logger.error "Hoptoad Failure: #{response.class}\n#{response.body if response.respond_to? :body}"
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
def url
|
142
|
-
URI.parse("http://hoptoadapp.com/notifier_api/v2/notices")
|
143
|
-
end
|
144
|
-
|
145
|
-
def format_exception( exception )
|
146
|
-
lines = Backtrace.parse( exception.backtrace )
|
147
|
-
exception_message= exception.message
|
148
|
-
exception_message.gsub!("\"",""")
|
149
|
-
exception_message.gsub!("'","'")
|
150
|
-
exception_message.gsub!("&","&")
|
151
|
-
exception_message.gsub!("<","<")
|
152
|
-
exception_message.gsub!(">",">")
|
153
|
-
|
154
|
-
<<-EOF
|
155
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
156
|
-
<notice version="2.0">
|
157
|
-
<api-key>#{self.api_key}</api-key>
|
158
|
-
<notifier>
|
159
|
-
<name>daemon-kit</name>
|
160
|
-
<version>#{DaemonKit::VERSION}</version>
|
161
|
-
<url>http://github.com/kennethkalmer/daemon-kit</url>
|
162
|
-
</notifier>
|
163
|
-
<error>
|
164
|
-
<class>#{exception.class.name}</class>
|
165
|
-
<message>#{exception_message}</message>
|
166
|
-
<backtrace>
|
167
|
-
#{Backtrace.parse( exception.backtrace ).lines.inject('') { |string,line| string << line.to_xml }}
|
168
|
-
</backtrace>
|
169
|
-
</error>
|
170
|
-
<server-environment>
|
171
|
-
<project-root>#{DaemonKit.root}</project-root>
|
172
|
-
<environment-name>#{DaemonKit.env}</environment-name>
|
173
|
-
</server-environment>
|
174
|
-
</notice>
|
175
|
-
EOF
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|
180
|
-
end
|