Prevent ActionMailer initializer from triggering load of ActionMailer

the after_initialize block has been changed to use the configuration from
`config.action_mailer` rather than `ActionMailer::Base` so that action mailer
is not loaded before it is necessary.
the mailer preview routes setup have been moved out of an `on_load(:action_mailer)`
block.
This commit is contained in:
Dave Gynn 2016-02-20 12:04:45 -08:00
parent 37f32c013e
commit 42e9eed9ba

@ -45,13 +45,6 @@ class Railtie < Rails::Railtie # :nodoc:
options.each { |k,v| send("#{k}=", v) }
if options.show_previews
app.routes.prepend do
get '/rails/mailers' => "rails/mailers#index", internal: true
get '/rails/mailers/*path' => "rails/mailers#preview", internal: true
end
end
ActionDispatch::IntegrationTest.send :include, ActionMailer::TestCase::ClearTestDeliveries
end
end
@ -62,9 +55,18 @@ class Railtie < Rails::Railtie # :nodoc:
end
end
config.after_initialize do
if ActionMailer::Base.preview_path
ActiveSupport::Dependencies.autoload_paths << ActionMailer::Base.preview_path
config.after_initialize do |app|
options = app.config.action_mailer
if options.show_previews
app.routes.prepend do
get '/rails/mailers' => "rails/mailers#index", internal: true
get '/rails/mailers/*path' => "rails/mailers#preview", internal: true
end
if options.preview_path
ActiveSupport::Dependencies.autoload_paths << options.preview_path
end
end
end
end