lib/action_mailer/preview.rb in actionmailer-7.0.8.6 vs lib/action_mailer/preview.rb in actionmailer-7.1.0.beta1
- old
+ new
@@ -5,15 +5,15 @@
module ActionMailer
module Previews # :nodoc:
extend ActiveSupport::Concern
included do
- # Set the location of mailer previews through app configuration:
+ # Add the location of mailer previews through app configuration:
#
- # config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"
+ # config.action_mailer.preview_paths << "#{Rails.root}/lib/mailer_previews"
#
- mattr_accessor :preview_path, instance_writer: false
+ mattr_accessor :preview_paths, instance_writer: false, default: []
# Enable or disable mailer previews through app configuration:
#
# config.action_mailer.show_previews = true
#
@@ -23,11 +23,35 @@
# :nodoc:
mattr_accessor :preview_interceptors, instance_writer: false, default: [ActionMailer::InlinePreviewInterceptor]
end
+ def preview_path
+ ActionMailer.deprecator.warn(<<-MSG.squish)
+ Using preview_path option is deprecated and will be removed in Rails 7.2.
+ Please use preview_paths instead.
+ MSG
+ self.class.preview_paths.first
+ end
+
module ClassMethods
+ def preview_path=(value)
+ ActionMailer.deprecator.warn(<<-MSG.squish)
+ Using preview_path= option is deprecated and will be removed in Rails 7.2.
+ Please use preview_paths= instead.
+ MSG
+ self.preview_paths << value
+ end
+
+ def preview_path
+ ActionMailer.deprecator.warn(<<-MSG.squish)
+ Using preview_path option is deprecated and will be removed in Rails 7.2.
+ Please use preview_paths instead.
+ MSG
+ self.preview_paths.first
+ end
+
# Register one or more Interceptors which will be called before mail is previewed.
def register_preview_interceptors(*interceptors)
interceptors.flatten.compact.each { |interceptor| register_preview_interceptor(interceptor) }
end
@@ -77,11 +101,11 @@
class << self
# Returns all mailer preview classes.
def all
load_previews if descendants.empty?
- descendants
+ descendants.sort_by { |mailer| mailer.name.titleize }
end
# Returns the mail object for the given email name. The registered preview
# interceptors will be informed so that they can transform the message
# as they would if the mail was actually being delivered.
@@ -117,16 +141,16 @@
name.delete_suffix("Preview").underscore
end
private
def load_previews
- if preview_path
- Dir["#{preview_path}/**/*_preview.rb"].sort.each { |file| require_dependency file }
+ preview_paths.each do |preview_path|
+ Dir["#{preview_path}/**/*_preview.rb"].sort.each { |file| require file }
end
end
- def preview_path
- Base.preview_path
+ def preview_paths
+ Base.preview_paths
end
def show_previews
Base.show_previews
end