actionmailer 2.0.5 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionmailer might be problematic. Click here for more details.

Files changed (73) hide show
  1. data/CHANGELOG +2 -5
  2. data/MIT-LICENSE +1 -1
  3. data/README +14 -10
  4. data/Rakefile +3 -4
  5. data/lib/action_mailer.rb +1 -1
  6. data/lib/action_mailer/adv_attr_accessor.rb +1 -1
  7. data/lib/action_mailer/base.rb +140 -100
  8. data/lib/action_mailer/helpers.rb +7 -7
  9. data/lib/action_mailer/part.rb +2 -2
  10. data/lib/action_mailer/quoting.rb +3 -1
  11. data/lib/action_mailer/test_case.rb +14 -22
  12. data/lib/action_mailer/vendor.rb +2 -2
  13. data/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +0 -0
  14. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail.rb +1 -0
  15. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  16. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/attachments.rb +2 -3
  17. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/base64.rb +4 -10
  18. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/compat.rb +8 -6
  19. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/config.rb +2 -6
  20. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/core_extensions.rb +14 -18
  21. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/encode.rb +77 -19
  22. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/header.rb +7 -10
  23. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  24. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/interface.rb +20 -13
  25. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/loader.rb +2 -0
  26. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/mail.rb +97 -26
  27. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/mailbox.rb +70 -10
  28. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  29. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/mbox.rb +2 -0
  30. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/net.rb +16 -15
  31. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/obsolete.rb +7 -12
  32. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/parser.rb +1 -0
  33. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/port.rb +0 -0
  34. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/quoting.rb +0 -0
  35. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  36. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/scanner.rb +3 -1
  37. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/scanner_r.rb +15 -15
  38. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/stringio.rb +1 -0
  39. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/utils.rb +89 -32
  40. data/lib/action_mailer/vendor/{tmail-1.2.1 → tmail-1.2.3}/tmail/version.rb +4 -3
  41. data/lib/action_mailer/version.rb +2 -2
  42. data/test/delivery_method_test.rb +1 -1
  43. data/test/mail_helper_test.rb +1 -1
  44. data/test/mail_render_test.rb +1 -1
  45. data/test/mail_service_test.rb +48 -9
  46. data/test/quoting_test.rb +19 -32
  47. data/test/test_helper_test.rb +3 -9
  48. data/test/tmail_test.rb +1 -1
  49. data/test/url_test.rb +2 -2
  50. metadata +33 -53
  51. data/lib/action_mailer/vendor/tmail-1.2.1/tmail/Makefile +0 -19
  52. data/lib/action_mailer/vendor/tmail-1.2.1/tmail/address.rb +0 -245
  53. data/lib/action_mailer/vendor/tmail-1.2.1/tmail/facade.rb +0 -552
  54. data/lib/action_mailer/vendor/tmail-1.2.1/tmail/info.rb +0 -35
  55. data/lib/action_mailer/vendor/tmail-1.2.1/tmail/parser.y +0 -381
  56. data/lib/action_mailer/vendor/tmail-1.2.1/tmail/tmail.rb +0 -1
  57. data/test/fixtures/first_mailer/share.rhtml +0 -0
  58. data/test/fixtures/helper_mailer/use_example_helper.rhtml +0 -0
  59. data/test/fixtures/helper_mailer/use_helper.rhtml +0 -0
  60. data/test/fixtures/helper_mailer/use_helper_method.rhtml +0 -0
  61. data/test/fixtures/helper_mailer/use_mail_helper.rhtml +0 -0
  62. data/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.rhtml +0 -0
  63. data/test/fixtures/path.with.dots/multipart_with_template_path_with_dots.rhtml +0 -0
  64. data/test/fixtures/raw_base64_decoded_string +0 -0
  65. data/test/fixtures/raw_base64_encoded_string +0 -1
  66. data/test/fixtures/second_mailer/share.rhtml +0 -0
  67. data/test/fixtures/templates/signed_up.rhtml +0 -0
  68. data/test/fixtures/test_mailer/implicitly_multipart_example.ignored.rhtml +0 -0
  69. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.rhtml +0 -0
  70. data/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.rhtml +0 -0
  71. data/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.rhtml +0 -0
  72. data/test/fixtures/test_mailer/signed_up.rhtml +0 -0
  73. data/test/fixtures/test_mailer/signed_up_with_url.rhtml +0 -0
@@ -1,3 +1,4 @@
1
+ #:stopdoc:
1
2
  # DO NOT MODIFY!!!!
2
3
  # This file is automatically generated by racc 1.4.5
3
4
  # from racc grammer file "parser.y".
@@ -0,0 +1,58 @@
1
+ #:stopdoc:
2
+ require 'rbconfig'
3
+
4
+ # Attempts to require anative extension.
5
+ # Falls back to pure-ruby version, if it fails.
6
+ #
7
+ # This uses Config::CONFIG['arch'] from rbconfig.
8
+
9
+ def require_arch(fname)
10
+ arch = Config::CONFIG['arch']
11
+ begin
12
+ path = File.join("tmail", arch, fname)
13
+ require path
14
+ rescue LoadError => e
15
+ # try pre-built Windows binaries
16
+ if arch =~ /mswin/
17
+ require File.join("tmail", 'mswin32', fname)
18
+ else
19
+ raise e
20
+ end
21
+ end
22
+ end
23
+
24
+
25
+ # def require_arch(fname)
26
+ # dext = Config::CONFIG['DLEXT']
27
+ # begin
28
+ # if File.extname(fname) == dext
29
+ # path = fname
30
+ # else
31
+ # path = File.join("tmail","#{fname}.#{dext}")
32
+ # end
33
+ # require path
34
+ # rescue LoadError => e
35
+ # begin
36
+ # arch = Config::CONFIG['arch']
37
+ # path = File.join("tmail", arch, "#{fname}.#{dext}")
38
+ # require path
39
+ # rescue LoadError
40
+ # case path
41
+ # when /i686/
42
+ # path.sub!('i686', 'i586')
43
+ # when /i586/
44
+ # path.sub!('i586', 'i486')
45
+ # when /i486/
46
+ # path.sub!('i486', 'i386')
47
+ # else
48
+ # begin
49
+ # require fname + '.rb'
50
+ # rescue LoadError
51
+ # raise e
52
+ # end
53
+ # end
54
+ # retry
55
+ # end
56
+ # end
57
+ # end
58
+ #:startdoc:
@@ -28,7 +28,8 @@
28
28
  # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
29
29
  # with permission of Minero Aoki.
30
30
  #++
31
-
31
+ #:stopdoc:
32
+ #require 'tmail/require_arch'
32
33
  require 'tmail/utils'
33
34
  require 'tmail/config'
34
35
 
@@ -45,3 +46,4 @@ module TMail
45
46
  Scanner = TMailScanner
46
47
  end
47
48
  end
49
+ #:stopdoc:
@@ -1,4 +1,3 @@
1
- #
2
1
  # scanner_r.rb
3
2
  #
4
3
  #--
@@ -26,14 +25,14 @@
26
25
  # Note: Originally licensed under LGPL v2+. Using MIT license for Rails
27
26
  # with permission of Minero Aoki.
28
27
  #++
29
-
28
+ #:stopdoc:
30
29
  require 'tmail/config'
31
30
 
32
31
  module TMail
33
32
 
34
33
  class TMailScanner
35
34
 
36
- Version = '0.11.0'
35
+ Version = '1.2.3'
37
36
  Version.freeze
38
37
 
39
38
  MIME_HEADERS = {
@@ -49,9 +48,9 @@ module TMail
49
48
  tokenchars = alnum + Regexp.quote(tokensyms)
50
49
  iso2022str = '\e(?!\(B)..(?:[^\e]+|\e(?!\(B)..)*\e\(B'
51
50
 
52
- eucstr = '(?:[\xa1-\xfe][\xa1-\xfe])+'
53
- sjisstr = '(?:[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc])+'
54
- utf8str = '(?:[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf])+'
51
+ eucstr = "(?:[\xa1-\xfe][\xa1-\xfe])+"
52
+ sjisstr = "(?:[\x81-\x9f\xe0-\xef][\x40-\x7e\x80-\xfc])+"
53
+ utf8str = "(?:[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf])+"
55
54
 
56
55
  quoted_with_iso2022 = /\A(?:[^\\\e"]+|#{iso2022str})+/n
57
56
  domlit_with_iso2022 = /\A(?:[^\\\e\]]+|#{iso2022str})+/n
@@ -105,7 +104,7 @@ module TMail
105
104
  @received = (scantype == :RECEIVED)
106
105
  @is_mime_header = MIME_HEADERS[scantype]
107
106
 
108
- atom, token, @quoted_re, @domlit_re, @comment_re = PATTERN_TABLE[$KCODE]
107
+ atom, token, @quoted_re, @domlit_re, @comment_re = PATTERN_TABLE[TMail.KCODE]
109
108
  @word_re = (MIME_HEADERS[scantype] ? token : atom)
110
109
  end
111
110
 
@@ -145,34 +144,34 @@ module TMail
145
144
 
146
145
  if s = readstr(@word_re)
147
146
  if @is_mime_header
148
- yield :TOKEN, s
147
+ yield [:TOKEN, s]
149
148
  else
150
149
  # atom
151
150
  if /\A\d+\z/ === s
152
- yield :DIGIT, s
151
+ yield [:DIGIT, s]
153
152
  elsif @received
154
- yield RECV_TOKEN[s.downcase] || :ATOM, s
153
+ yield [RECV_TOKEN[s.downcase] || :ATOM, s]
155
154
  else
156
- yield :ATOM, s
155
+ yield [:ATOM, s]
157
156
  end
158
157
  end
159
158
 
160
159
  elsif skip(/\A"/)
161
- yield :QUOTED, scan_quoted_word()
160
+ yield [:QUOTED, scan_quoted_word()]
162
161
 
163
162
  elsif skip(/\A\[/)
164
- yield :DOMLIT, scan_domain_literal()
163
+ yield [:DOMLIT, scan_domain_literal()]
165
164
 
166
165
  elsif skip(/\A\(/)
167
166
  @comments.push scan_comment()
168
167
 
169
168
  else
170
169
  c = readchar()
171
- yield c, c
170
+ yield [c, c]
172
171
  end
173
172
  end
174
173
 
175
- yield false, '$'
174
+ yield [false, '$']
176
175
  end
177
176
 
178
177
  def scan_quoted_word
@@ -259,3 +258,4 @@ module TMail
259
258
  end
260
259
 
261
260
  end # module TMail
261
+ #:startdoc:
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  =begin rdoc
2
3
 
3
4
  = String handling class
@@ -1,8 +1,3 @@
1
- =begin rdoc
2
-
3
- = General Purpose TMail Utilities
4
-
5
- =end
6
1
  #--
7
2
  # Copyright (c) 1998-2003 Minero Aoki <aamine@loveruby.net>
8
3
  #
@@ -29,21 +24,73 @@
29
24
  # with permission of Minero Aoki.
30
25
  #++
31
26
 
27
+ # = TMail - The EMail Swiss Army Knife for Ruby
28
+ #
29
+ # The TMail library provides you with a very complete way to handle and manipulate EMails
30
+ # from within your Ruby programs.
31
+ #
32
+ # Used as the backbone for email handling by the Ruby on Rails and Nitro web frameworks as
33
+ # well as a bunch of other Ruby apps including the Ruby-Talk mailing list to newsgroup email
34
+ # gateway, it is a proven and reliable email handler that won't let you down.
35
+ #
36
+ # Originally created by Minero Aoki, TMail has been recently picked up by Mikel Lindsaar and
37
+ # is being actively maintained. Numerous backlogged bug fixes have been applied as well as
38
+ # Ruby 1.9 compatibility and a swath of documentation to boot.
39
+ #
40
+ # TMail allows you to treat an email totally as an object and allow you to get on with your
41
+ # own programming without having to worry about crafting the perfect email address validation
42
+ # parser, or assembling an email from all it's component parts.
43
+ #
44
+ # TMail handles the most complex part of the email - the header. It generates and parses
45
+ # headers and provides you with instant access to their innards through simple and logically
46
+ # named accessor and setter methods.
47
+ #
48
+ # TMail also provides a wrapper to Net/SMTP as well as Unix Mailbox handling methods to
49
+ # directly read emails from your unix mailbox, parse them and use them.
50
+ #
51
+ # Following is the comprehensive list of methods to access TMail::Mail objects. You can also
52
+ # check out TMail::Mail, TMail::Address and TMail::Headers for other lists.
32
53
  module TMail
33
54
 
55
+ # Provides an exception to throw on errors in Syntax within TMail's parsers
34
56
  class SyntaxError < StandardError; end
35
57
 
36
-
58
+ # Provides a new email boundary to separate parts of the email. This is a random
59
+ # string based off the current time, so should be fairly unique.
60
+ #
61
+ # For Example:
62
+ #
63
+ # TMail.new_boundary
64
+ # #=> "mimepart_47bf656968207_25a8fbb80114"
65
+ # TMail.new_boundary
66
+ # #=> "mimepart_47bf66051de4_25a8fbb80240"
37
67
  def TMail.new_boundary
38
68
  'mimepart_' + random_tag
39
69
  end
40
70
 
71
+ # Provides a new email message ID. You can use this to generate unique email message
72
+ # id's for your email so you can track them.
73
+ #
74
+ # Optionally takes a fully qualified domain name (default to the current hostname
75
+ # returned by Socket.gethostname) that will be appended to the message ID.
76
+ #
77
+ # For Example:
78
+ #
79
+ # email.message_id = TMail.new_message_id
80
+ # #=> "<47bf66845380e_25a8fbb80332@baci.local.tmail>"
81
+ # email.to_s
82
+ # #=> "Message-Id: <47bf668b633f1_25a8fbb80475@baci.local.tmail>\n\n"
83
+ # email.message_id = TMail.new_message_id("lindsaar.net")
84
+ # #=> "<47bf668b633f1_25a8fbb80475@lindsaar.net.tmail>"
85
+ # email.to_s
86
+ # #=> "Message-Id: <47bf668b633f1_25a8fbb80475@lindsaar.net.tmail>\n\n"
41
87
  def TMail.new_message_id( fqdn = nil )
42
88
  fqdn ||= ::Socket.gethostname
43
89
  "<#{random_tag()}@#{fqdn}.tmail>"
44
90
  end
45
91
 
46
- def TMail.random_tag
92
+ #:stopdoc:
93
+ def TMail.random_tag #:nodoc:
47
94
  @uniq += 1
48
95
  t = Time.now
49
96
  sprintf('%x%x_%x%x%d%x',
@@ -54,50 +101,55 @@ module TMail
54
101
 
55
102
  @uniq = 0
56
103
 
104
+ #:startdoc:
105
+
106
+ # Text Utils provides a namespace to define TOKENs, ATOMs, PHRASEs and CONTROL characters that
107
+ # are OK per RFC 2822.
108
+ #
109
+ # It also provides methods you can call to determine if a string is safe
57
110
  module TextUtils
58
- # Defines characters per RFC that are OK for TOKENs, ATOMs, PHRASEs and CONTROL characters.
59
111
 
60
- aspecial = '()<>[]:;.\\,"'
61
- tspecial = '()<>[];:\\,"/?='
62
- lwsp = " \t\r\n"
63
- control = '\x00-\x1f\x7f-\xff'
112
+ aspecial = %Q|()<>[]:;.\\,"|
113
+ tspecial = %Q|()<>[];:\\,"/?=|
114
+ lwsp = %Q| \t\r\n|
115
+ control = %Q|\x00-\x1f\x7f-\xff|
64
116
 
117
+ CONTROL_CHAR = /[#{control}]/n
65
118
  ATOM_UNSAFE = /[#{Regexp.quote aspecial}#{control}#{lwsp}]/n
66
119
  PHRASE_UNSAFE = /[#{Regexp.quote aspecial}#{control}]/n
67
120
  TOKEN_UNSAFE = /[#{Regexp.quote tspecial}#{control}#{lwsp}]/n
68
- CONTROL_CHAR = /[#{control}]/n
69
-
121
+
122
+ # Returns true if the string supplied is free from characters not allowed as an ATOM
70
123
  def atom_safe?( str )
71
- # Returns true if the string supplied is free from characters not allowed as an ATOM
72
124
  not ATOM_UNSAFE === str
73
125
  end
74
126
 
127
+ # If the string supplied has ATOM unsafe characters in it, will return the string quoted
128
+ # in double quotes, otherwise returns the string unmodified
75
129
  def quote_atom( str )
76
- # If the string supplied has ATOM unsafe characters in it, will return the string quoted
77
- # in double quotes, otherwise returns the string unmodified
78
130
  (ATOM_UNSAFE === str) ? dquote(str) : str
79
131
  end
80
132
 
133
+ # If the string supplied has PHRASE unsafe characters in it, will return the string quoted
134
+ # in double quotes, otherwise returns the string unmodified
81
135
  def quote_phrase( str )
82
- # If the string supplied has PHRASE unsafe characters in it, will return the string quoted
83
- # in double quotes, otherwise returns the string unmodified
84
136
  (PHRASE_UNSAFE === str) ? dquote(str) : str
85
137
  end
86
138
 
139
+ # Returns true if the string supplied is free from characters not allowed as a TOKEN
87
140
  def token_safe?( str )
88
- # Returns true if the string supplied is free from characters not allowed as a TOKEN
89
141
  not TOKEN_UNSAFE === str
90
142
  end
91
143
 
144
+ # If the string supplied has TOKEN unsafe characters in it, will return the string quoted
145
+ # in double quotes, otherwise returns the string unmodified
92
146
  def quote_token( str )
93
- # If the string supplied has TOKEN unsafe characters in it, will return the string quoted
94
- # in double quotes, otherwise returns the string unmodified
95
147
  (TOKEN_UNSAFE === str) ? dquote(str) : str
96
148
  end
97
149
 
98
- def dquote( str )
99
- # Wraps supplied string in double quotes unless it is already wrapped
100
- # Returns double quoted string
150
+ # Wraps supplied string in double quotes unless it is already wrapped
151
+ # Returns double quoted string
152
+ def dquote( str ) #:nodoc:
101
153
  unless str =~ /^".*?"$/
102
154
  '"' + str.gsub(/["\\]/n) {|s| '\\' + s } + '"'
103
155
  else
@@ -106,12 +158,14 @@ module TMail
106
158
  end
107
159
  private :dquote
108
160
 
161
+ # Unwraps supplied string from inside double quotes
162
+ # Returns unquoted string
109
163
  def unquote( str )
110
- # Unwraps supplied string from inside double quotes
111
- # Returns unquoted string
112
164
  str =~ /^"(.*?)"$/ ? $1 : str
113
165
  end
114
166
 
167
+ # Provides a method to join a domain name by it's parts and also makes it
168
+ # ATOM safe by quoting it as needed
115
169
  def join_domain( arr )
116
170
  arr.map {|i|
117
171
  if /\A\[.*\]\z/ === i
@@ -122,7 +176,7 @@ module TMail
122
176
  }.join('.')
123
177
  end
124
178
 
125
-
179
+ #:stopdoc:
126
180
  ZONESTR_TABLE = {
127
181
  'jst' => 9 * 60,
128
182
  'eet' => 2 * 60,
@@ -168,9 +222,10 @@ module TMail
168
222
  'y' => 12 * 60,
169
223
  'z' => 0 * 60
170
224
  }
225
+ #:startdoc:
171
226
 
227
+ # Takes a time zone string from an EMail and converts it to Unix Time (seconds)
172
228
  def timezone_string_to_unixtime( str )
173
- # Takes a time zone string from an EMail and converts it to Unix Time (seconds)
174
229
  if m = /([\+\-])(\d\d?)(\d\d)/.match(str)
175
230
  sec = (m[2].to_i * 60 + m[3].to_i) * 60
176
231
  m[1] == '-' ? -sec : sec
@@ -181,7 +236,7 @@ module TMail
181
236
  end
182
237
  end
183
238
 
184
-
239
+ #:stopdoc:
185
240
  WDAY = %w( Sun Mon Tue Wed Thu Fri Sat TMailBUG )
186
241
  MONTH = %w( TMailBUG Jan Feb Mar Apr May Jun
187
242
  Jul Aug Sep Oct Nov Dec TMailBUG )
@@ -201,7 +256,7 @@ module TMail
201
256
 
202
257
 
203
258
  MESSAGE_ID = /<[^\@>]+\@[^>\@]+>/
204
-
259
+
205
260
  def message_id?( str )
206
261
  MESSAGE_ID === str
207
262
  end
@@ -239,7 +294,7 @@ module TMail
239
294
  }
240
295
 
241
296
  def to_kcode( str )
242
- flag = NKF_FLAGS[$KCODE] or return str
297
+ flag = NKF_FLAGS[TMail.KCODE] or return str
243
298
  NKF.nkf(flag, str)
244
299
  end
245
300
 
@@ -274,6 +329,8 @@ module TMail
274
329
  end
275
330
  end
276
331
  end
332
+ #:startdoc:
333
+
277
334
 
278
335
  end
279
336
 
@@ -27,11 +27,12 @@
27
27
  # with permission of Minero Aoki.
28
28
  #++
29
29
 
30
- module TMail #:nodoc:
31
- module VERSION #:nodoc:
30
+ #:stopdoc:
31
+ module TMail
32
+ module VERSION
32
33
  MAJOR = 1
33
34
  MINOR = 2
34
- TINY = 0
35
+ TINY = 3
35
36
 
36
37
  STRING = [MAJOR, MINOR, TINY].join('.')
37
38
  end
@@ -1,8 +1,8 @@
1
1
  module ActionMailer
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 2
4
- MINOR = 0
5
- TINY = 5
4
+ MINOR = 1
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,4 +1,4 @@
1
- require "#{File.dirname(__FILE__)}/abstract_unit"
1
+ require 'abstract_unit'
2
2
 
3
3
  class DefaultDeliveryMethodMailer < ActionMailer::Base
4
4
  end
@@ -1,4 +1,4 @@
1
- require "#{File.dirname(__FILE__)}/abstract_unit"
1
+ require 'abstract_unit'
2
2
 
3
3
  module MailerHelper
4
4
  def person_name