actionmailer 4.1.16 → 4.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c18771d664786d54151d54abdc1c3c12a3b9e71f
4
- data.tar.gz: ba3ad4d7e614a64f9a94ec8c1e723fdbd35944ff
3
+ metadata.gz: b645b4249222f8f9158e506e7ce6f9896b94ffb1
4
+ data.tar.gz: c37159e974453b38edeb571c2a7856520c80bd40
5
5
  SHA512:
6
- metadata.gz: 391411b6f6e35d8796e46e065108100ebf7be0407d4519d29a4ded1621625a969f518b0d9a35657d7500c4aed21076a058ae72ca8d45a79887d253bca5467507
7
- data.tar.gz: 7c0413e4e8fb0952252b01e8dccf3887ea85c17ca22639a07f1c423503a4ad3dd777783c95351ae9c38ecf1c2618aa9e306beb0658cbf5044caa0cfd44805f35
6
+ metadata.gz: b7be91503097c551664c180a89064411f1a0e0caedcb57568b72a952dbb1ba416e1b0cdb6921caa23eda9cd7cf35cdb7838dfe22e8885805d7bfbe385afbb5e1
7
+ data.tar.gz: b5f6483b59c93b59c7f290ece2214e96def84c552255f5365b2cf5fe0a02eeb94ace98e024ec223e2f6aaa74dff81d62332dbf1fd85acb2f5cf6fffa23d0eebc
@@ -1,91 +1,8 @@
1
- ## Rails 4.1.16 (July 12, 2016) ##
2
-
3
- * No changes.
4
-
5
-
6
- ## Rails 4.1.15 (March 07, 2016) ##
7
-
8
- * No changes.
9
-
10
-
11
- ## Rails 4.1.14.2 (February 26, 2016) ##
12
-
13
- * No changes.
14
-
15
-
16
- ## Rails 4.1.14.1 (January 25, 2015) ##
17
-
18
- * No changes.
19
-
20
-
21
- ## Rails 4.1.14 (November 12, 2015) ##
22
-
23
- * No changes.
24
-
25
-
26
- ## Rails 4.1.14.rc1 (October 30, 2015) ##
27
-
28
- * No changes.
29
-
30
-
31
- ## Rails 4.1.13 (August 24, 2015) ##
32
-
33
- * No changes.
34
-
35
-
36
- ## Rails 4.1.12 (June 25, 2015) ##
37
-
38
- * Mailer preview now uses `url_for` to fix links to emails for apps running on
39
- a subdirectory.
40
-
41
- *Remo Mueller*
42
-
43
- * Mailer previews no longer crash when the `mail` method wasn't called
44
- (`NullMail`).
45
-
46
- Fixes #19849.
47
-
48
- *Yves Senn*
49
-
50
- * Make sure labels and values line up in mailer previews.
51
-
52
- *Yves Senn*
53
-
54
-
55
- ## Rails 4.1.11 (June 16, 2015) ##
56
-
57
- * No changes.
58
-
59
-
60
- ## Rails 4.1.10 (March 19, 2015) ##
61
-
62
- * No changes.
63
-
64
-
65
- ## Rails 4.1.9 (January 6, 2015) ##
66
-
67
- * No changes.
68
-
69
-
70
- ## Rails 4.1.8 (November 16, 2014) ##
71
-
72
- * Attachments can be added while rendering the mail template.
73
-
74
- Fixes #16974.
75
-
76
- *Christian Felder*
77
-
78
- ## Rails 4.1.7.1 (November 19, 2014) ##
79
-
80
- * No changes.
81
-
82
-
83
- ## Rails 4.1.7 (October 29, 2014) ##
84
-
85
- * No changes.
86
-
87
-
88
- ## Rails 4.1.6 (September 11, 2014) ##
1
+ * Added #deliver_later in addition to #deliver, which will enqueue a job to render and
2
+ deliver the mail instead of delivering it right at that moment. The job is enqueued
3
+ using the new Active Job framework in Rails, and will use whatever queue is configured for Rails.
4
+
5
+ *DHH/Abdelkader Boudih/Cristian Bica*
89
6
 
90
7
  * Make ActionMailer::Previews methods class methods. Previously they were
91
8
  instance methods and ActionMailer tries to render a message when they
@@ -93,6 +10,12 @@
93
10
 
94
11
  *Cristian Bica*
95
12
 
13
+ * Deprecate `*_path` helpers in email views. When used they generate
14
+ non-working links and are not the intention of most developers. Instead
15
+ we recommend to use `*_url` helper.
16
+
17
+ *Richard Schneeman*
18
+
96
19
  * Raise an exception when attachments are added after `mail` was called.
97
20
  This is a safeguard to prevent invalid emails.
98
21
 
@@ -100,99 +23,20 @@
100
23
 
101
24
  *Yves Senn*
102
25
 
103
- * Allow preview interceptors to be registered through
104
- `config.action_mailer.preview_interceptors`.
105
-
106
- See #15739.
107
-
108
- *Yves Senn*
109
-
110
-
111
- ## Rails 4.1.5 (August 18, 2014) ##
112
-
113
- * No changes.
114
-
115
-
116
- ## Rails 4.1.4 (July 2, 2014) ##
117
-
118
- * No changes.
119
-
120
-
121
- ## Rails 4.1.3 (July 2, 2014) ##
122
-
123
- * No changes.
124
-
125
-
126
- ## Rails 4.1.2 (June 26, 2014) ##
127
-
128
- * No changes.
129
-
26
+ * Add `config.action_mailer.show_previews` configuration option.
130
27
 
131
- ## Rails 4.1.1 (May 6, 2014) ##
28
+ This config option can be used to enable the mail preview in environments
29
+ other than development (such as staging).
132
30
 
133
- * No changes.
31
+ Defaults to `true` in development and false elsewhere.
134
32
 
33
+ *Leonard Garvey*
135
34
 
136
- ## Rails 4.1.0 (April 8, 2014) ##
137
-
138
- * Support the use of underscored symbols when registering interceptors and
139
- observers like we do elsewhere within Rails.
140
-
141
- *Andrew White*
142
-
143
- * Add the ability to intercept emails before previewing in a similar fashion
144
- to how emails can be intercepted before delivery.
145
-
146
- Fixes #13622.
147
-
148
- Example:
149
-
150
- class CSSInlineStyler
151
- def self.previewing_email(message)
152
- # inline CSS styles
153
- end
154
- end
155
-
156
- ActionMailer::Base.register_preview_interceptor CSSInlineStyler
157
-
158
- *Andrew White*
159
-
160
- * Add mailer previews feature based on 37 Signals mail_view gem.
161
-
162
- *Andrew White*
163
-
164
- * Calling `mail()` without arguments serves as getter for the current mail
165
- message and keeps previously set headers.
166
-
167
- Fixes #13090.
168
-
169
- Example:
170
-
171
- class MailerWithCallback < ActionMailer::Base
172
- after_action :a_callback
173
-
174
- def welcome
175
- mail subject: "subject", to: ["joe@example.com"]
176
- end
35
+ * Allow preview interceptors to be registered through
36
+ `config.action_mailer.preview_interceptors`.
177
37
 
178
- def a_callback
179
- mail # => returns the current mail message
180
- end
181
- end
38
+ See #15739.
182
39
 
183
40
  *Yves Senn*
184
41
 
185
- * Instrument the generation of Action Mailer messages. The time it takes to
186
- generate a message is written to the log.
187
-
188
- *Daniel Schierbeck*
189
-
190
- * Invoke mailer defaults as procs only if they are procs, do not convert with
191
- `to_proc`. That an object is convertible to a proc does not mean it's meant
192
- to be always used as a proc.
193
-
194
- Fixes #11533.
195
-
196
- *Alex Tsukernik*
197
-
198
- Please check [4-0-stable](https://github.com/rails/rails/blob/4-0-stable/actionmailer/CHANGELOG.md) for previous changes.
42
+ Please check [4-1-stable](https://github.com/rails/rails/blob/4-1-stable/actionmailer/CHANGELOG.md) for previous changes.
@@ -102,7 +102,7 @@ Example:
102
102
  )
103
103
 
104
104
  if email.has_attachments?
105
- email.attachments.each do |attachment|
105
+ email.attachments.each do |attachment|
106
106
  page.attachments.create({
107
107
  file: attachment, description: email.subject
108
108
  })
@@ -140,7 +140,7 @@ The latest version of Action Mailer can be installed with RubyGems:
140
140
 
141
141
  Source code can be downloaded as part of the Rails project on GitHub
142
142
 
143
- * https://github.com/rails/rails/tree/4-1-stable/actionmailer
143
+ * https://github.com/rails/rails/tree/master/actionmailer
144
144
 
145
145
 
146
146
  == License
@@ -156,7 +156,11 @@ API documentation is at
156
156
 
157
157
  * http://api.rubyonrails.org
158
158
 
159
- Bug reports and feature requests can be filed with the rest for the Ruby on Rails project here:
159
+ Bug reports can be filed for the Ruby on Rails project here:
160
160
 
161
161
  * https://github.com/rails/rails/issues
162
162
 
163
+ Feature requests should be discussed on the rails-core mailing list here:
164
+
165
+ * https://groups.google.com/forum/?fromgroups#!forum/rubyonrails-core
166
+
@@ -40,10 +40,11 @@ module ActionMailer
40
40
 
41
41
  autoload :Base
42
42
  autoload :DeliveryMethods
43
- autoload :InlinePreviewInterceptor
44
43
  autoload :MailHelper
45
44
  autoload :Preview
46
45
  autoload :Previews, 'action_mailer/preview'
47
46
  autoload :TestCase
48
47
  autoload :TestHelper
48
+ autoload :MessageDelivery
49
+ autoload :DeliveryJob
49
50
  end
@@ -94,7 +94,7 @@ module ActionMailer
94
94
  # Hi <%= @account.name %>,
95
95
  # Thanks for joining our service! Please check back often.
96
96
  #
97
- # You can even use Action Pack helpers in these views. For example:
97
+ # You can even use Action View helpers in these views. For example:
98
98
  #
99
99
  # You got a new note!
100
100
  # <%= truncate(@note.body, length: 25) %>
@@ -154,7 +154,7 @@ module ActionMailer
154
154
  # * signup_notification.text.erb
155
155
  # * signup_notification.html.erb
156
156
  # * signup_notification.xml.builder
157
- # * signup_notification.yaml.erb
157
+ # * signup_notification.yml.erb
158
158
  #
159
159
  # Each would be rendered and added as a separate part to the message, with the corresponding content
160
160
  # type. The content type for the entire message is automatically set to <tt>multipart/alternative</tt>,
@@ -301,12 +301,13 @@ module ActionMailer
301
301
  # end
302
302
  # end
303
303
  #
304
- # Callbacks in ActionMailer are implemented using AbstractController::Callbacks, so you
305
- # can define and configure callbacks in the same manner that you would use callbacks in
306
- # classes that inherit from ActionController::Base.
304
+ # Callbacks in Action Mailer are implemented using
305
+ # <tt>AbstractController::Callbacks</tt>, so you can define and configure
306
+ # callbacks in the same manner that you would use callbacks in classes that
307
+ # inherit from <tt>ActionController::Base</tt>.
307
308
  #
308
309
  # Note that unless you have a specific reason to do so, you should prefer using before_action
309
- # rather than after_action in your ActionMailer classes so that headers are parsed properly.
310
+ # rather than after_action in your Action Mailer classes so that headers are parsed properly.
310
311
  #
311
312
  # = Previewing emails
312
313
  #
@@ -325,7 +326,7 @@ module ActionMailer
325
326
  # directory can be configured using the <tt>preview_path</tt> option which has a default
326
327
  # of <tt>test/mailers/previews</tt>:
327
328
  #
328
- # config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"
329
+ # config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"
329
330
  #
330
331
  # An overview of all previews is accessible at <tt>http://localhost:3000/rails/mailers</tt>
331
332
  # on a running development server instance.
@@ -368,8 +369,8 @@ module ActionMailer
368
369
  # This is a symbol and one of <tt>:plain</tt> (will send the password in the clear), <tt>:login</tt> (will
369
370
  # send password Base64 encoded) or <tt>:cram_md5</tt> (combines a Challenge/Response mechanism to exchange
370
371
  # information and a cryptographic Message Digest 5 algorithm to hash important information)
371
- # * <tt>:enable_starttls_auto</tt> - When set to true, detects if STARTTLS is enabled in your SMTP server
372
- # and starts to use it.
372
+ # * <tt>:enable_starttls_auto</tt> - Detects if STARTTLS is enabled in your SMTP server and starts
373
+ # to use it. Defaults to <tt>true</tt>.
373
374
  # * <tt>:openssl_verify_mode</tt> - When using TLS, you can set how OpenSSL checks the certificate. This is
374
375
  # really useful if you need to validate a self-signed and/or a wildcard certificate. You can use the name
375
376
  # of an OpenSSL verify constant (<tt>'none'</tt>, <tt>'peer'</tt>, <tt>'client_once'</tt>,
@@ -393,7 +394,7 @@ module ActionMailer
393
394
  # implement for a custom delivery agent.
394
395
  #
395
396
  # * <tt>perform_deliveries</tt> - Determines whether emails are actually sent from Action Mailer when you
396
- # call <tt>.deliver</tt> on an mail message or on an Action Mailer method. This is on by default but can
397
+ # call <tt>.deliver</tt> on an email message or on an Action Mailer method. This is on by default but can
397
398
  # be turned off to aid in functional testing.
398
399
  #
399
400
  # * <tt>deliveries</tt> - Keeps an array of all the emails sent out through the Action Mailer with
@@ -547,8 +548,8 @@ module ActionMailer
547
548
  end
548
549
 
549
550
  def method_missing(method_name, *args) # :nodoc:
550
- if respond_to?(method_name)
551
- new(method_name, *args).message
551
+ if action_methods.include?(method_name.to_s)
552
+ MessageDelivery.new(self, method_name, *args)
552
553
  else
553
554
  super
554
555
  end
@@ -584,7 +585,10 @@ module ActionMailer
584
585
 
585
586
  class NullMail #:nodoc:
586
587
  def body; '' end
587
- def header; {} end
588
+
589
+ def respond_to?(string, include_all=false)
590
+ true
591
+ end
588
592
 
589
593
  def method_missing(*args)
590
594
  nil
@@ -760,6 +764,7 @@ module ActionMailer
760
764
  def mail(headers = {}, &block)
761
765
  return @_message if @_mail_was_called && headers.blank? && !block
762
766
 
767
+ @_mail_was_called = true
763
768
  m = @_message
764
769
 
765
770
  # At the beginning, do not consider class default for content_type
@@ -787,8 +792,6 @@ module ActionMailer
787
792
 
788
793
  # Render the templates and blocks
789
794
  responses = collect_responses(headers, &block)
790
- @_mail_was_called = true
791
-
792
795
  create_parts_from_responses(m, responses)
793
796
 
794
797
  # Setup content type, reapply charset and handle parts order
@@ -898,6 +901,11 @@ module ActionMailer
898
901
  container.add_part(part)
899
902
  end
900
903
 
904
+ # Emails do not support relative path links.
905
+ def self.supports_path?
906
+ false
907
+ end
908
+
901
909
  ActiveSupport.run_load_hooks(:action_mailer, self)
902
910
  end
903
911
  end
@@ -0,0 +1,11 @@
1
+ require 'active_job'
2
+
3
+ module ActionMailer
4
+ class DeliveryJob < ActiveJob::Base
5
+ queue_as :mailers
6
+
7
+ def perform(mailer, mail_method, delivery_method, *args)
8
+ mailer.constantize.public_send(mail_method, *args).send(delivery_method)
9
+ end
10
+ end
11
+ end
@@ -6,9 +6,9 @@ module ActionMailer
6
6
 
7
7
  module VERSION
8
8
  MAJOR = 4
9
- MINOR = 1
10
- TINY = 16
11
- PRE = nil
9
+ MINOR = 2
10
+ TINY = 0
11
+ PRE = "beta1"
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
14
14
  end
@@ -6,24 +6,27 @@ module ActionMailer
6
6
  class LogSubscriber < ActiveSupport::LogSubscriber
7
7
  # An email was delivered.
8
8
  def deliver(event)
9
- return unless logger.info?
10
- recipients = Array(event.payload[:to]).join(', ')
11
- info("\nSent mail to #{recipients} (#{event.duration.round(1)}ms)")
12
- debug(event.payload[:mail])
9
+ info do
10
+ recipients = Array(event.payload[:to]).join(', ')
11
+ "\nSent mail to #{recipients} (#{event.duration.round(1)}ms)"
12
+ end
13
+
14
+ debug { event.payload[:mail] }
13
15
  end
14
16
 
15
17
  # An email was received.
16
18
  def receive(event)
17
- return unless logger.info?
18
- info("\nReceived mail (#{event.duration.round(1)}ms)")
19
- debug(event.payload[:mail])
19
+ info { "\nReceived mail (#{event.duration.round(1)}ms)" }
20
+ debug { event.payload[:mail] }
20
21
  end
21
22
 
22
23
  # An email was generated.
23
24
  def process(event)
24
- mailer = event.payload[:mailer]
25
- action = event.payload[:action]
26
- debug("\n#{mailer}##{action}: processed outbound mail in #{event.duration.round(1)}ms")
25
+ debug do
26
+ mailer = event.payload[:mailer]
27
+ action = event.payload[:action]
28
+ "\n#{mailer}##{action}: processed outbound mail in #{event.duration.round(1)}ms"
29
+ end
27
30
  end
28
31
 
29
32
  # Use the logger configured for ActionMailer::Base
@@ -11,8 +11,8 @@ module ActionMailer
11
11
  }.join("\n\n")
12
12
 
13
13
  # Make list points stand on their own line
14
- formatted.gsub!(/[ ]*([*]+) ([^*]*)/) { |s| " #{$1} #{$2.strip}\n" }
15
- formatted.gsub!(/[ ]*([#]+) ([^#]*)/) { |s| " #{$1} #{$2.strip}\n" }
14
+ formatted.gsub!(/[ ]*([*]+) ([^*]*)/) { " #{$1} #{$2.strip}\n" }
15
+ formatted.gsub!(/[ ]*([#]+) ([^#]*)/) { " #{$1} #{$2.strip}\n" }
16
16
 
17
17
  formatted
18
18
  end
@@ -29,7 +29,7 @@ module ActionMailer
29
29
 
30
30
  # Access the message attachments list.
31
31
  def attachments
32
- mailer.attachments
32
+ @_message.attachments
33
33
  end
34
34
 
35
35
  # Returns +text+ wrapped at +len+ columns and indented +indent+ spaces.
@@ -0,0 +1,45 @@
1
+ require 'delegate'
2
+
3
+ module ActionMailer
4
+ class MessageDelivery < Delegator
5
+ def initialize(mailer, mail_method, *args)
6
+ @mailer = mailer
7
+ @mail_method = mail_method
8
+ @args = args
9
+ end
10
+
11
+ def __getobj__
12
+ @obj ||= @mailer.send(:new, @mail_method, *@args).message
13
+ end
14
+
15
+ def __setobj__(obj)
16
+ @obj = obj
17
+ end
18
+
19
+ def message #:nodoc:
20
+ __getobj__
21
+ end
22
+
23
+ def deliver_later!(options={})
24
+ enqueue_delivery :deliver!, options
25
+ end
26
+
27
+ def deliver_later(options={})
28
+ enqueue_delivery :deliver, options
29
+ end
30
+
31
+ private
32
+ def enqueue_delivery(delivery_method, options={})
33
+ args = @mailer.name, @mail_method.to_s, delivery_method.to_s, *@args
34
+ enqueue_method = :enqueue
35
+ if options[:at]
36
+ enqueue_method = :enqueue_at
37
+ args.unshift options[:at]
38
+ elsif options[:in]
39
+ enqueue_method = :enqueue_in
40
+ args.unshift options[:in]
41
+ end
42
+ ActionMailer::DeliveryJob.send enqueue_method, *args
43
+ end
44
+ end
45
+ end
@@ -11,6 +11,14 @@ module ActionMailer
11
11
  #
12
12
  mattr_accessor :preview_path, instance_writer: false
13
13
 
14
+ # Enable or disable mailer previews through app configuration:
15
+ #
16
+ # config.action_mailer.show_previews = true
17
+ #
18
+ # Defaults to true for development environment
19
+ #
20
+ mattr_accessor :show_previews, instance_writer: false
21
+
14
22
  # :nodoc:
15
23
  mattr_accessor :preview_interceptors, instance_writer: false
16
24
  self.preview_interceptors = []
@@ -96,6 +104,10 @@ module ActionMailer
96
104
  Base.preview_path
97
105
  end
98
106
 
107
+ def show_previews #:nodoc:
108
+ Base.show_previews
109
+ end
110
+
99
111
  def inform_preview_interceptors(message) #:nodoc:
100
112
  Base.preview_interceptors.each do |interceptor|
101
113
  interceptor.previewing_email(message)
@@ -18,8 +18,9 @@ module ActionMailer
18
18
  options.assets_dir ||= paths["public"].first
19
19
  options.javascripts_dir ||= paths["public/javascripts"].first
20
20
  options.stylesheets_dir ||= paths["public/stylesheets"].first
21
+ options.show_previews = Rails.env.development? if options.show_previews.nil?
21
22
 
22
- if Rails.env.development?
23
+ if options.show_previews
23
24
  options.preview_path ||= defined?(Rails.root) ? "#{Rails.root}/test/mailers/previews" : nil
24
25
  end
25
26
 
@@ -29,7 +30,7 @@ module ActionMailer
29
30
 
30
31
  ActiveSupport.on_load(:action_mailer) do
31
32
  include AbstractController::UrlFor
32
- extend ::AbstractController::Railties::RoutesHelpers.with(app.routes)
33
+ extend ::AbstractController::Railties::RoutesHelpers.with(app.routes, false)
33
34
  include app.routes.mounted_helpers
34
35
 
35
36
  register_interceptors(options.delete(:interceptors))
@@ -37,6 +38,13 @@ module ActionMailer
37
38
  register_observers(options.delete(:observers))
38
39
 
39
40
  options.each { |k,v| send("#{k}=", v) }
41
+
42
+ if options.show_previews
43
+ app.routes.append do
44
+ get '/rails/mailers' => "rails/mailers#index"
45
+ get '/rails/mailers/*path' => "rails/mailers#preview"
46
+ end
47
+ end
40
48
  end
41
49
  end
42
50
 
@@ -1,4 +1,5 @@
1
1
  require 'active_support/test_case'
2
+ require 'rails-dom-testing'
2
3
 
3
4
  module ActionMailer
4
5
  class NonInferrableMailerError < ::StandardError
@@ -15,11 +16,13 @@ module ActionMailer
15
16
 
16
17
  include ActiveSupport::Testing::ConstantLookup
17
18
  include TestHelper
19
+ include Rails::Dom::Testing::Assertions::SelectorAssertions
18
20
 
19
21
  included do
20
22
  class_attribute :_mailer_class
21
23
  setup :initialize_test_deliveries
22
24
  setup :set_expected_mail
25
+ teardown :restore_test_deliveries
23
26
  end
24
27
 
25
28
  module ClassMethods
@@ -54,11 +57,26 @@ module ActionMailer
54
57
  protected
55
58
 
56
59
  def initialize_test_deliveries
57
- ActionMailer::Base.delivery_method = :test
60
+ set_delivery_method :test
61
+ @old_perform_deliveries = ActionMailer::Base.perform_deliveries
58
62
  ActionMailer::Base.perform_deliveries = true
63
+ end
64
+
65
+ def restore_test_deliveries
66
+ restore_delivery_method
67
+ ActionMailer::Base.perform_deliveries = @old_perform_deliveries
59
68
  ActionMailer::Base.deliveries.clear
60
69
  end
61
70
 
71
+ def set_delivery_method(method)
72
+ @old_delivery_method = ActionMailer::Base.delivery_method
73
+ ActionMailer::Base.delivery_method = method
74
+ end
75
+
76
+ def restore_delivery_method
77
+ ActionMailer::Base.delivery_method = @old_delivery_method
78
+ end
79
+
62
80
  def set_expected_mail
63
81
  @expected = Mail.new
64
82
  @expected.content_type ["text", "plain", { "charset" => charset }]
@@ -1,4 +1,6 @@
1
1
  module ActionMailer
2
+ # Provides helper methods for testing Action Mailer, including #assert_emails
3
+ # and #assert_no_emails
2
4
  module TestHelper
3
5
  # Asserts that the number of emails sent matches the given number.
4
6
  #
@@ -1,7 +1,8 @@
1
1
  require_relative 'gem_version'
2
2
 
3
3
  module ActionMailer
4
- # Returns the version of the currently loaded ActionMailer as a <tt>Gem::Version</tt>
4
+ # Returns the version of the currently loaded Action Mailer as a
5
+ # <tt>Gem::Version</tt>.
5
6
  def self.version
6
7
  gem_version
7
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionmailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.16
4
+ version: 4.2.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-12 00:00:00.000000000 Z
11
+ date: 2014-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.1.16
19
+ version: 4.2.0.beta1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 4.1.16
26
+ version: 4.2.0.beta1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionview
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 4.1.16
33
+ version: 4.2.0.beta1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 4.1.16
40
+ version: 4.2.0.beta1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mail
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,6 +58,26 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 2.5.4
61
+ - !ruby/object:Gem::Dependency
62
+ name: rails-dom-testing
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.0'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.0.2
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.0'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.0.2
61
81
  description: Email on Rails. Compose, deliver, receive, and test emails using the
62
82
  familiar controller/view pattern. First-class support for multipart email and attachments.
63
83
  email: david@loudthinking.com
@@ -71,11 +91,12 @@ files:
71
91
  - lib/action_mailer.rb
72
92
  - lib/action_mailer/base.rb
73
93
  - lib/action_mailer/collector.rb
94
+ - lib/action_mailer/delivery_job.rb
74
95
  - lib/action_mailer/delivery_methods.rb
75
96
  - lib/action_mailer/gem_version.rb
76
- - lib/action_mailer/inline_preview_interceptor.rb
77
97
  - lib/action_mailer/log_subscriber.rb
78
98
  - lib/action_mailer/mail_helper.rb
99
+ - lib/action_mailer/message_delivery.rb
79
100
  - lib/action_mailer/preview.rb
80
101
  - lib/action_mailer/railtie.rb
81
102
  - lib/action_mailer/test_case.rb
@@ -99,13 +120,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
99
120
  version: 1.9.3
100
121
  required_rubygems_version: !ruby/object:Gem::Requirement
101
122
  requirements:
102
- - - ">="
123
+ - - ">"
103
124
  - !ruby/object:Gem::Version
104
- version: '0'
125
+ version: 1.3.1
105
126
  requirements:
106
127
  - none
107
128
  rubyforge_project:
108
- rubygems_version: 2.4.5.1
129
+ rubygems_version: 2.2.2
109
130
  signing_key:
110
131
  specification_version: 4
111
132
  summary: Email composition, delivery, and receiving framework (part of Rails).
@@ -1,61 +0,0 @@
1
- require 'base64'
2
-
3
- module ActionMailer
4
- # Implements a mailer preview interceptor that converts image tag src attributes
5
- # that use inline cid: style urls to data: style urls so that they are visible
6
- # when previewing a HTML email in a web browser.
7
- #
8
- # This interceptor is not enabled by default, to use it just register it like any
9
- # other mailer preview interceptor:
10
- #
11
- # ActionMailer::Base.register_preview_interceptor(ActionMailer::InlinePreviewInterceptor)
12
- #
13
- class InlinePreviewInterceptor
14
- PATTERN = /src=(?:"cid:[^"]+"|'cid:[^']+')/i
15
-
16
- include Base64
17
-
18
- def self.previewing_email(message) #:nodoc:
19
- new(message).transform!
20
- end
21
-
22
- def initialize(message) #:nodoc:
23
- @message = message
24
- end
25
-
26
- def transform! #:nodoc:
27
- return message if html_part.blank?
28
-
29
- html_source.gsub!(PATTERN) do |match|
30
- if part = find_part(match[9..-2])
31
- %[src="#{data_url(part)}"]
32
- else
33
- match
34
- end
35
- end
36
-
37
- message
38
- end
39
-
40
- private
41
- def message
42
- @message
43
- end
44
-
45
- def html_part
46
- @html_part ||= message.html_part
47
- end
48
-
49
- def html_source
50
- html_part.body.raw_source
51
- end
52
-
53
- def data_url(part)
54
- "data:#{part.mime_type};base64,#{strict_encode64(part.body.raw_source)}"
55
- end
56
-
57
- def find_part(cid)
58
- message.all_parts.find{ |p| p.attachment? && p.cid == cid }
59
- end
60
- end
61
- end