daemon-kit 0.1.8rc1 → 0.1.8rc2
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/History.txt +4 -0
- data/Rakefile +1 -1
- data/daemon-kit.gemspec +6 -37
- data/lib/daemon_kit.rb +1 -1
- data/lib/daemon_kit/error_handlers/base.rb +3 -3
- data/lib/daemon_kit/error_handlers/hoptoad.rb +135 -22
- data/lib/daemon_kit/safety.rb +0 -1
- data/lib/generators/daemon_kit/app/templates/config/boot.rb +7 -3
- data/lib/generators/daemon_kit/app/templates/config/environment.rb.tt +5 -2
- metadata +3 -34
- data/Manifest.txt +0 -176
- data/lib/daemon_kit/error_handlers/mail.rb +0 -85
- data/vendor/tmail-1.2.3/tmail.rb +0 -5
- data/vendor/tmail-1.2.3/tmail/address.rb +0 -426
- data/vendor/tmail-1.2.3/tmail/attachments.rb +0 -46
- data/vendor/tmail-1.2.3/tmail/base64.rb +0 -46
- data/vendor/tmail-1.2.3/tmail/compat.rb +0 -41
- data/vendor/tmail-1.2.3/tmail/config.rb +0 -67
- data/vendor/tmail-1.2.3/tmail/core_extensions.rb +0 -63
- data/vendor/tmail-1.2.3/tmail/encode.rb +0 -581
- data/vendor/tmail-1.2.3/tmail/header.rb +0 -960
- data/vendor/tmail-1.2.3/tmail/index.rb +0 -9
- data/vendor/tmail-1.2.3/tmail/interface.rb +0 -1130
- data/vendor/tmail-1.2.3/tmail/loader.rb +0 -3
- data/vendor/tmail-1.2.3/tmail/mail.rb +0 -578
- data/vendor/tmail-1.2.3/tmail/mailbox.rb +0 -495
- data/vendor/tmail-1.2.3/tmail/main.rb +0 -6
- data/vendor/tmail-1.2.3/tmail/mbox.rb +0 -3
- data/vendor/tmail-1.2.3/tmail/net.rb +0 -248
- data/vendor/tmail-1.2.3/tmail/obsolete.rb +0 -132
- data/vendor/tmail-1.2.3/tmail/parser.rb +0 -1476
- data/vendor/tmail-1.2.3/tmail/port.rb +0 -379
- data/vendor/tmail-1.2.3/tmail/quoting.rb +0 -118
- data/vendor/tmail-1.2.3/tmail/require_arch.rb +0 -58
- data/vendor/tmail-1.2.3/tmail/scanner.rb +0 -49
- data/vendor/tmail-1.2.3/tmail/scanner_r.rb +0 -261
- data/vendor/tmail-1.2.3/tmail/stringio.rb +0 -280
- data/vendor/tmail-1.2.3/tmail/utils.rb +0 -337
- data/vendor/tmail-1.2.3/tmail/version.rb +0 -39
- data/vendor/tmail.rb +0 -13
data/History.txt
CHANGED
@@ -4,6 +4,10 @@
|
|
4
4
|
* Evented XMPP now handled by blather
|
5
5
|
* Boot script fixes
|
6
6
|
* Removed Jabber generator, deprecating Jabber class (use XMPP)
|
7
|
+
* Upgraded Hoptoad notifications to V2 of the notifier API
|
8
|
+
* Fix various argument handling bugs
|
9
|
+
* Removed support for exception emails
|
10
|
+
* Improved log rotation support [mperham]
|
7
11
|
|
8
12
|
== 0.1.7.12 2009-12-04
|
9
13
|
|
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ begin
|
|
15
15
|
gemspec.post_install_message = IO.read('PostInstall.txt')
|
16
16
|
gemspec.extra_rdoc_files.include '*.txt'
|
17
17
|
|
18
|
-
gemspec.add_dependency 'eventmachine', '>=0.12.
|
18
|
+
gemspec.add_dependency 'eventmachine', '>=0.12.10'
|
19
19
|
gemspec.add_development_dependency 'rspec'
|
20
20
|
gemspec.add_development_dependency 'cucumber'
|
21
21
|
end
|
data/daemon-kit.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{daemon-kit}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.8rc2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["kenneth.kalmer@gmail.com"]
|
12
|
-
s.date = %q{2010-04-
|
12
|
+
s.date = %q{2010-04-14}
|
13
13
|
s.default_executable = %q{daemon-kit}
|
14
14
|
s.description = %q{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.}
|
15
15
|
s.email = %q{kenneth.kalmer@gmail.com}
|
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
"Deployment.txt",
|
20
20
|
"History.txt",
|
21
21
|
"Logging.txt",
|
22
|
-
"Manifest.txt",
|
23
22
|
"PostInstall.txt",
|
24
23
|
"README.rdoc",
|
25
24
|
"RuoteParticipants.txt",
|
@@ -31,7 +30,6 @@ Gem::Specification.new do |s|
|
|
31
30
|
"Deployment.txt",
|
32
31
|
"History.txt",
|
33
32
|
"Logging.txt",
|
34
|
-
"Manifest.txt",
|
35
33
|
"PostInstall.txt",
|
36
34
|
"README.rdoc",
|
37
35
|
"Rakefile",
|
@@ -59,7 +57,6 @@ Gem::Specification.new do |s|
|
|
59
57
|
"lib/daemon_kit/em.rb",
|
60
58
|
"lib/daemon_kit/error_handlers/base.rb",
|
61
59
|
"lib/daemon_kit/error_handlers/hoptoad.rb",
|
62
|
-
"lib/daemon_kit/error_handlers/mail.rb",
|
63
60
|
"lib/daemon_kit/exceptions.rb",
|
64
61
|
"lib/daemon_kit/generators.rb",
|
65
62
|
"lib/daemon_kit/generators/base.rb",
|
@@ -211,35 +208,7 @@ Gem::Specification.new do |s|
|
|
211
208
|
"test/test_helper.rb",
|
212
209
|
"test/test_nanite_agent_generator.rb",
|
213
210
|
"test/test_ruote_generator.rb",
|
214
|
-
"test/test_test_unit_generator.rb"
|
215
|
-
"vendor/tmail-1.2.3/tmail.rb",
|
216
|
-
"vendor/tmail-1.2.3/tmail/address.rb",
|
217
|
-
"vendor/tmail-1.2.3/tmail/attachments.rb",
|
218
|
-
"vendor/tmail-1.2.3/tmail/base64.rb",
|
219
|
-
"vendor/tmail-1.2.3/tmail/compat.rb",
|
220
|
-
"vendor/tmail-1.2.3/tmail/config.rb",
|
221
|
-
"vendor/tmail-1.2.3/tmail/core_extensions.rb",
|
222
|
-
"vendor/tmail-1.2.3/tmail/encode.rb",
|
223
|
-
"vendor/tmail-1.2.3/tmail/header.rb",
|
224
|
-
"vendor/tmail-1.2.3/tmail/index.rb",
|
225
|
-
"vendor/tmail-1.2.3/tmail/interface.rb",
|
226
|
-
"vendor/tmail-1.2.3/tmail/loader.rb",
|
227
|
-
"vendor/tmail-1.2.3/tmail/mail.rb",
|
228
|
-
"vendor/tmail-1.2.3/tmail/mailbox.rb",
|
229
|
-
"vendor/tmail-1.2.3/tmail/main.rb",
|
230
|
-
"vendor/tmail-1.2.3/tmail/mbox.rb",
|
231
|
-
"vendor/tmail-1.2.3/tmail/net.rb",
|
232
|
-
"vendor/tmail-1.2.3/tmail/obsolete.rb",
|
233
|
-
"vendor/tmail-1.2.3/tmail/parser.rb",
|
234
|
-
"vendor/tmail-1.2.3/tmail/port.rb",
|
235
|
-
"vendor/tmail-1.2.3/tmail/quoting.rb",
|
236
|
-
"vendor/tmail-1.2.3/tmail/require_arch.rb",
|
237
|
-
"vendor/tmail-1.2.3/tmail/scanner.rb",
|
238
|
-
"vendor/tmail-1.2.3/tmail/scanner_r.rb",
|
239
|
-
"vendor/tmail-1.2.3/tmail/stringio.rb",
|
240
|
-
"vendor/tmail-1.2.3/tmail/utils.rb",
|
241
|
-
"vendor/tmail-1.2.3/tmail/version.rb",
|
242
|
-
"vendor/tmail.rb"
|
211
|
+
"test/test_test_unit_generator.rb"
|
243
212
|
]
|
244
213
|
s.homepage = %q{http://github.com/kennethkalmer/daemon-kit}
|
245
214
|
s.post_install_message = %q{
|
@@ -279,16 +248,16 @@ To get started quickly run 'daemon-kit' without any arguments
|
|
279
248
|
s.specification_version = 3
|
280
249
|
|
281
250
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
282
|
-
s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.
|
251
|
+
s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.10"])
|
283
252
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
284
253
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
285
254
|
else
|
286
|
-
s.add_dependency(%q<eventmachine>, [">= 0.12.
|
255
|
+
s.add_dependency(%q<eventmachine>, [">= 0.12.10"])
|
287
256
|
s.add_dependency(%q<rspec>, [">= 0"])
|
288
257
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
289
258
|
end
|
290
259
|
else
|
291
|
-
s.add_dependency(%q<eventmachine>, [">= 0.12.
|
260
|
+
s.add_dependency(%q<eventmachine>, [">= 0.12.10"])
|
292
261
|
s.add_dependency(%q<rspec>, [">= 0"])
|
293
262
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
294
263
|
end
|
data/lib/daemon_kit.rb
CHANGED
@@ -13,7 +13,7 @@ $:.unshift( File.dirname(__FILE__).to_absolute_path ) unless
|
|
13
13
|
$:.include?( File.dirname(__FILE__).to_absolute_path )
|
14
14
|
|
15
15
|
module DaemonKit
|
16
|
-
VERSION = '0.1.
|
16
|
+
VERSION = '0.1.8rc2'
|
17
17
|
|
18
18
|
autoload :Initializer, 'daemon_kit/initializer'
|
19
19
|
autoload :Application, 'daemon_kit/application'
|
@@ -7,21 +7,21 @@ module DaemonKit
|
|
7
7
|
class Base
|
8
8
|
|
9
9
|
class << self
|
10
|
-
|
10
|
+
|
11
11
|
@instance = nil
|
12
12
|
|
13
13
|
def instance
|
14
14
|
@instance ||= new
|
15
15
|
end
|
16
16
|
private :new
|
17
|
-
|
17
|
+
|
18
18
|
# When we're inherited, immediately register the handler with
|
19
19
|
# the safety net
|
20
20
|
def inherited( child ) #:nodoc:
|
21
21
|
Safety.register_error_handler( child )
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
# Error handlers should overwrite this method and implement
|
26
26
|
# their own reporting method.
|
27
27
|
def handle_exception( exception )
|
@@ -5,21 +5,127 @@ module DaemonKit
|
|
5
5
|
# Error reporting via Hoptoad.
|
6
6
|
class Hoptoad < Base
|
7
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, %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
|
+
|
8
113
|
# Your hoptoad API key
|
9
114
|
@api_key = nil
|
10
115
|
attr_accessor :api_key
|
11
116
|
|
12
117
|
def handle_exception( exception )
|
13
118
|
headers = {
|
14
|
-
'Content-type' => '
|
119
|
+
'Content-type' => 'text/xml',
|
15
120
|
'Accept' => 'text/xml, application/xml'
|
16
121
|
}
|
17
122
|
|
18
123
|
http = Net::HTTP.new( url.host, url.port )
|
19
|
-
data =
|
124
|
+
data = format_exception( exception )
|
125
|
+
DaemonKit.logger.debug("Sending to Hoptoad: #{data}")
|
20
126
|
|
21
127
|
response = begin
|
22
|
-
http.post( url.path,
|
128
|
+
http.post( url.path, data, headers )
|
23
129
|
rescue TimeoutError => e
|
24
130
|
DaemonKit.logger.error("Timeout while contacting the Hoptoad server.")
|
25
131
|
nil
|
@@ -33,29 +139,36 @@ module DaemonKit
|
|
33
139
|
end
|
34
140
|
|
35
141
|
def url
|
36
|
-
URI.parse("http://hoptoadapp.com/notices
|
142
|
+
URI.parse("http://hoptoadapp.com/notifier_api/v2/notices")
|
37
143
|
end
|
38
144
|
|
39
|
-
def
|
40
|
-
|
41
|
-
:api_key => self.api_key,
|
42
|
-
:error_class => exception.class.name,
|
43
|
-
:error_message => "#{exception.class.name}: #{exception.message}",
|
44
|
-
:backtrace => exception.backtrace,
|
45
|
-
:environment => ENV.to_hash,
|
46
|
-
:request => {},
|
47
|
-
:session => {}
|
48
|
-
}
|
145
|
+
def format_exception( exception )
|
146
|
+
lines = Backtrace.parse( exception.backtrace )
|
49
147
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
148
|
+
<<-EOF
|
149
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
150
|
+
<notice version="2.0">
|
151
|
+
<api-key>#{self.api_key}</api-key>
|
152
|
+
<notifier>
|
153
|
+
<name>daemon-kit</name>
|
154
|
+
<version>#{DaemonKit::VERSION}</version>
|
155
|
+
<url>http://github.com/kennethkalmer/daemon-kit</url>
|
156
|
+
</notifier>
|
157
|
+
<error>
|
158
|
+
<class>#{exception.class.name}</class>
|
159
|
+
<message>#{exception.message}</message>
|
160
|
+
<backtrace>
|
161
|
+
#{Backtrace.parse( exception.backtrace ).lines.inject('') { |string,line| string << line.to_xml }}
|
162
|
+
</backtrace>
|
163
|
+
</error>
|
164
|
+
<server-environment>
|
165
|
+
<project-root>#{DaemonKit.root}</project-root>
|
166
|
+
<environment-name>#{DaemonKit.env}</environment-name>
|
167
|
+
</server-environment>
|
168
|
+
</notice>
|
169
|
+
EOF
|
58
170
|
end
|
59
171
|
end
|
172
|
+
|
60
173
|
end
|
61
174
|
end
|
data/lib/daemon_kit/safety.rb
CHANGED
@@ -3,9 +3,13 @@
|
|
3
3
|
|
4
4
|
DAEMON_ROOT = "#{File.expand_path(File.dirname(__FILE__))}/.." unless defined?( DAEMON_ROOT )
|
5
5
|
|
6
|
-
# Use
|
7
|
-
|
8
|
-
require File.
|
6
|
+
# Use Bundler (preferred)
|
7
|
+
begin
|
8
|
+
require File.expand_path('../../.bundle/environment', __FILE__)
|
9
|
+
rescue LoadError
|
10
|
+
require 'rubygems'
|
11
|
+
require 'bundler'
|
12
|
+
Bundler.setup
|
9
13
|
end
|
10
14
|
|
11
15
|
module DaemonKit
|
@@ -6,6 +6,9 @@
|
|
6
6
|
# Boot up
|
7
7
|
require File.join(File.dirname(__FILE__), 'boot')
|
8
8
|
|
9
|
+
# Auto-require default libraries and those for the current Rails environment.
|
10
|
+
Bundler.require :default, DaemonKit.env
|
11
|
+
|
9
12
|
DaemonKit::Initializer.run do |config|
|
10
13
|
|
11
14
|
# The name of the daemon as reported by process monitoring tools
|
@@ -18,6 +21,6 @@ DaemonKit::Initializer.run do |config|
|
|
18
21
|
# config.backtraces = true
|
19
22
|
|
20
23
|
# Configure the safety net (see DaemonKit::Safety)
|
21
|
-
# config.safety_net.handler = :
|
22
|
-
# config.safety_net.
|
24
|
+
# config.safety_net.handler = :hoptoad
|
25
|
+
# config.safety_net.hoptoad.api_key = ''
|
23
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daemon-kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kenneth.kalmer@gmail.com
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-04-
|
12
|
+
date: 2010-04-14 00:00:00 +02:00
|
13
13
|
default_executable: daemon-kit
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.12.
|
23
|
+
version: 0.12.10
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
@@ -53,7 +53,6 @@ extra_rdoc_files:
|
|
53
53
|
- Deployment.txt
|
54
54
|
- History.txt
|
55
55
|
- Logging.txt
|
56
|
-
- Manifest.txt
|
57
56
|
- PostInstall.txt
|
58
57
|
- README.rdoc
|
59
58
|
- RuoteParticipants.txt
|
@@ -64,7 +63,6 @@ files:
|
|
64
63
|
- Deployment.txt
|
65
64
|
- History.txt
|
66
65
|
- Logging.txt
|
67
|
-
- Manifest.txt
|
68
66
|
- PostInstall.txt
|
69
67
|
- README.rdoc
|
70
68
|
- Rakefile
|
@@ -92,7 +90,6 @@ files:
|
|
92
90
|
- lib/daemon_kit/em.rb
|
93
91
|
- lib/daemon_kit/error_handlers/base.rb
|
94
92
|
- lib/daemon_kit/error_handlers/hoptoad.rb
|
95
|
-
- lib/daemon_kit/error_handlers/mail.rb
|
96
93
|
- lib/daemon_kit/exceptions.rb
|
97
94
|
- lib/daemon_kit/generators.rb
|
98
95
|
- lib/daemon_kit/generators/base.rb
|
@@ -245,34 +242,6 @@ files:
|
|
245
242
|
- test/test_nanite_agent_generator.rb
|
246
243
|
- test/test_ruote_generator.rb
|
247
244
|
- test/test_test_unit_generator.rb
|
248
|
-
- vendor/tmail-1.2.3/tmail.rb
|
249
|
-
- vendor/tmail-1.2.3/tmail/address.rb
|
250
|
-
- vendor/tmail-1.2.3/tmail/attachments.rb
|
251
|
-
- vendor/tmail-1.2.3/tmail/base64.rb
|
252
|
-
- vendor/tmail-1.2.3/tmail/compat.rb
|
253
|
-
- vendor/tmail-1.2.3/tmail/config.rb
|
254
|
-
- vendor/tmail-1.2.3/tmail/core_extensions.rb
|
255
|
-
- vendor/tmail-1.2.3/tmail/encode.rb
|
256
|
-
- vendor/tmail-1.2.3/tmail/header.rb
|
257
|
-
- vendor/tmail-1.2.3/tmail/index.rb
|
258
|
-
- vendor/tmail-1.2.3/tmail/interface.rb
|
259
|
-
- vendor/tmail-1.2.3/tmail/loader.rb
|
260
|
-
- vendor/tmail-1.2.3/tmail/mail.rb
|
261
|
-
- vendor/tmail-1.2.3/tmail/mailbox.rb
|
262
|
-
- vendor/tmail-1.2.3/tmail/main.rb
|
263
|
-
- vendor/tmail-1.2.3/tmail/mbox.rb
|
264
|
-
- vendor/tmail-1.2.3/tmail/net.rb
|
265
|
-
- vendor/tmail-1.2.3/tmail/obsolete.rb
|
266
|
-
- vendor/tmail-1.2.3/tmail/parser.rb
|
267
|
-
- vendor/tmail-1.2.3/tmail/port.rb
|
268
|
-
- vendor/tmail-1.2.3/tmail/quoting.rb
|
269
|
-
- vendor/tmail-1.2.3/tmail/require_arch.rb
|
270
|
-
- vendor/tmail-1.2.3/tmail/scanner.rb
|
271
|
-
- vendor/tmail-1.2.3/tmail/scanner_r.rb
|
272
|
-
- vendor/tmail-1.2.3/tmail/stringio.rb
|
273
|
-
- vendor/tmail-1.2.3/tmail/utils.rb
|
274
|
-
- vendor/tmail-1.2.3/tmail/version.rb
|
275
|
-
- vendor/tmail.rb
|
276
245
|
has_rdoc: true
|
277
246
|
homepage: http://github.com/kennethkalmer/daemon-kit
|
278
247
|
licenses: []
|