今天在生产环境上添加ExceptionNotifier后,每次报错后都提示邮件已发送,但是“[perfix]”.encode!未定义。
真恶心,看来又是版本问题。
仔细查看代码应该是mail这个gem包的encode!与别的encode!冲突了,解决方法:
# Required patch for mail 2.2.19 Encoding conflict in Ruby 1.8
# See: https://github.com/mikel/mail/pull/265
unless "".respond_to?(:encode!)
module Mail
class UnstructuredField
def encode(value)
value.encode!(charset) if charset && value.respond_to?(:encode!)
(value.not_ascii_only? ? [value].pack("M").gsub("=\n", '') : value).gsub("\r", "=0D").gsub("\n", "=0A")
end
end
end
end
module Mail
class SubjectField < UnstructuredField
def initialize(value = nil, charset = 'utf-8')
super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), charset)
end
end
end