diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index 2a9210deb9be37957257a0242761698a9a63f4ac..d4420040112bce6fa0d2d0d297706137a5f8e842 100644 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -31,22 +31,32 @@ end end -require 'action_mailer/vendor' -require 'tmail' - -require 'action_mailer/base' -require 'action_mailer/helpers' -require 'action_mailer/mail_helper' -require 'action_mailer/quoting' -require 'action_mailer/test_helper' +module ActionMailer + def self.load_all! + [Base, Part, ::Text::Format, ::Net::SMTP] + end -require 'net/smtp' + autoload :AdvAttrAccessor, 'action_mailer/adv_attr_accessor' + autoload :Base, 'action_mailer/base' + autoload :Helpers, 'action_mailer/helpers' + autoload :Part, 'action_mailer/part' + autoload :PartContainer, 'action_mailer/part_container' + autoload :Quoting, 'action_mailer/quoting' + autoload :TestCase, 'action_mailer/test_case' + autoload :TestHelper, 'action_mailer/test_helper' + autoload :Utils, 'action_mailer/utils' +end -ActionMailer::Base.class_eval do - include ActionMailer::Quoting - include ActionMailer::Helpers +module Text + autoload :Format, 'action_mailer/vendor/text_format' +end - helper MailHelper +module Net + autoload :SMTP, 'net/smtp' end -silence_warnings { TMail::Encoder.const_set("MAX_LINE_LEN", 200) } +autoload :MailHelper, 'action_mailer/mail_helper' +autoload :TMail, 'action_mailer/vendor/tmail' + +# TODO: Don't explicitly load entire lib +ActionMailer.load_all! diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index e41c88d81bea7cadfa498950220a24aa33f2a066..8bf06aae6efafc9bb4f02375fd19a95ee486cfca 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -1,7 +1,3 @@ -require 'action_mailer/adv_attr_accessor' -require 'action_mailer/part' -require 'action_mailer/part_container' -require 'action_mailer/utils' require 'tmail/net' module ActionMailer #:nodoc: @@ -245,7 +241,7 @@ module ActionMailer #:nodoc: # and appear last in the mime encoded message. You can also pick a different order from inside a method with # +implicit_parts_order+. class Base - include AdvAttrAccessor, PartContainer + include AdvAttrAccessor, PartContainer, Quoting, Utils if Object.const_defined?(:ActionController) include ActionController::UrlWriter include ActionController::Layout @@ -648,11 +644,11 @@ def create_mail if @parts.empty? m.set_content_type(real_content_type, nil, ctype_attrs) - m.body = Utils.normalize_new_lines(body) + m.body = normalize_new_lines(body) else if String === body part = TMail::Mail.new - part.body = Utils.normalize_new_lines(body) + part.body = normalize_new_lines(body) part.set_content_type(real_content_type, nil, ctype_attrs) part.set_content_disposition "inline" m.parts << part @@ -698,4 +694,9 @@ def perform_delivery_test(mail) deliveries << mail end end + + Base.class_eval do + include Helpers + helper MailHelper + end end diff --git a/actionmailer/lib/action_mailer/mail_helper.rb b/actionmailer/lib/action_mailer/mail_helper.rb index 11fd7d77e01000225807109088084f83ceaf73f2..351b966abe7b23337820d90219cfbf99fbf2bc15 100644 --- a/actionmailer/lib/action_mailer/mail_helper.rb +++ b/actionmailer/lib/action_mailer/mail_helper.rb @@ -1,5 +1,3 @@ -require 'text/format' - module MailHelper # Uses Text::Format to take the text and format it, indented two spaces for # each line, and wrapped at 72 columns. diff --git a/actionmailer/lib/action_mailer/part.rb b/actionmailer/lib/action_mailer/part.rb index 2dabf15f082fd221f5b7871e6212afe47d623e46..977c0b2b5ccfa2e0ea38186aa1243b27448f8307 100644 --- a/actionmailer/lib/action_mailer/part.rb +++ b/actionmailer/lib/action_mailer/part.rb @@ -1,15 +1,10 @@ -require 'action_mailer/adv_attr_accessor' -require 'action_mailer/part_container' -require 'action_mailer/utils' - module ActionMailer # Represents a subpart of an email message. It shares many similar # attributes of ActionMailer::Base. Although you can create parts manually # and add them to the +parts+ list of the mailer, it is easier # to use the helper methods in ActionMailer::PartContainer. class Part - include ActionMailer::AdvAttrAccessor - include ActionMailer::PartContainer + include AdvAttrAccessor, PartContainer, Utils # Represents the body of the part, as a string. This should not be a # Hash (like ActionMailer::Base), but if you want a template to be rendered @@ -64,7 +59,7 @@ def to_mail(defaults) when "base64" then part.body = TMail::Base64.folding_encode(body) when "quoted-printable" - part.body = [Utils.normalize_new_lines(body)].pack("M*") + part.body = [normalize_new_lines(body)].pack("M*") else part.body = body end @@ -102,7 +97,6 @@ def to_mail(defaults) end private - def squish(values={}) values.delete_if { |k,v| v.nil? } end diff --git a/actionmailer/lib/action_mailer/test_case.rb b/actionmailer/lib/action_mailer/test_case.rb index d474afe3a2ac104e2ba09114c0f337eede7d816f..8035db6f03ee0e03a4a05c430db66b7691041d89 100644 --- a/actionmailer/lib/action_mailer/test_case.rb +++ b/actionmailer/lib/action_mailer/test_case.rb @@ -10,7 +10,7 @@ def initialize(name) end class TestCase < ActiveSupport::TestCase - include ActionMailer::Quoting + include Quoting, TestHelper setup :initialize_test_deliveries setup :set_expected_mail diff --git a/actionmailer/lib/action_mailer/test_helper.rb b/actionmailer/lib/action_mailer/test_helper.rb index 3a1612442f596619ff5901c80c645be6b1ead7a6..f234c0248c0abbf3efdbfea3b5cf5883155995e7 100644 --- a/actionmailer/lib/action_mailer/test_helper.rb +++ b/actionmailer/lib/action_mailer/test_helper.rb @@ -58,6 +58,7 @@ def assert_no_emails(&block) end end +# TODO: Deprecate this module Test module Unit class TestCase diff --git a/actionmailer/lib/action_mailer/utils.rb b/actionmailer/lib/action_mailer/utils.rb index 552f695a9288766636e4c3e241887ca86b2aac77..26d2e60aafc05a9f64f83134d9c5397181c7c039 100644 --- a/actionmailer/lib/action_mailer/utils.rb +++ b/actionmailer/lib/action_mailer/utils.rb @@ -3,6 +3,5 @@ module Utils #:nodoc: def normalize_new_lines(text) text.to_s.gsub(/\r\n?/, "\n") end - module_function :normalize_new_lines end end diff --git a/actionmailer/lib/action_mailer/vendor.rb b/actionmailer/lib/action_mailer/vendor.rb deleted file mode 100644 index 7a20e9bd6e1c9fab8a0baffe4ea01e9996547a37..0000000000000000000000000000000000000000 --- a/actionmailer/lib/action_mailer/vendor.rb +++ /dev/null @@ -1,14 +0,0 @@ -# Prefer gems to the bundled libs. -require 'rubygems' - -begin - gem 'tmail', '~> 1.2.3' -rescue Gem::LoadError - $:.unshift "#{File.dirname(__FILE__)}/vendor/tmail-1.2.3" -end - -begin - gem 'text-format', '>= 0.6.3' -rescue Gem::LoadError - $:.unshift "#{File.dirname(__FILE__)}/vendor/text-format-0.6.3" -end diff --git a/actionmailer/lib/action_mailer/vendor/text_format.rb b/actionmailer/lib/action_mailer/vendor/text_format.rb new file mode 100644 index 0000000000000000000000000000000000000000..c6c8c394d05842171b73de50a1c40a9d206ef918 --- /dev/null +++ b/actionmailer/lib/action_mailer/vendor/text_format.rb @@ -0,0 +1,10 @@ +# Prefer gems to the bundled libs. +require 'rubygems' + +begin + gem 'text-format', '>= 0.6.3' +rescue Gem::LoadError + $:.unshift "#{File.dirname(__FILE__)}/text-format-0.6.3" +end + +require 'text/format' diff --git a/actionmailer/lib/action_mailer/vendor/tmail.rb b/actionmailer/lib/action_mailer/vendor/tmail.rb new file mode 100644 index 0000000000000000000000000000000000000000..51d36cdd0d3d6dc419865dbebd95b1d8bcaa89fb --- /dev/null +++ b/actionmailer/lib/action_mailer/vendor/tmail.rb @@ -0,0 +1,17 @@ +# Prefer gems to the bundled libs. +require 'rubygems' + +begin + gem 'tmail', '~> 1.2.3' +rescue Gem::LoadError + $:.unshift "#{File.dirname(__FILE__)}/tmail-1.2.3" +end + +module TMail +end + +require 'tmail' + +silence_warnings do + TMail::Encoder.const_set("MAX_LINE_LEN", 200) +end