railtie.rb 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. require "action_mailer"
  2. require "rails"
  3. require "abstract_controller/railties/routes_helpers"
  4. module ActionMailer
  5. class Railtie < Rails::Railtie
  6. config.action_mailer = ActiveSupport::OrderedOptions.new
  7. initializer "action_mailer.logger" do
  8. ActiveSupport.on_load(:action_mailer) { self.logger ||= Rails.logger }
  9. end
  10. initializer "action_mailer.set_configs" do |app|
  11. paths = app.config.paths
  12. options = app.config.action_mailer
  13. options.assets_dir ||= paths["public"].first
  14. options.javascripts_dir ||= paths["public/javascripts"].first
  15. options.stylesheets_dir ||= paths["public/stylesheets"].first
  16. # make sure readers methods get compiled
  17. options.asset_path ||= app.config.asset_path
  18. options.asset_host ||= app.config.asset_host
  19. options.relative_url_root ||= app.config.relative_url_root
  20. ActiveSupport.on_load(:action_mailer) do
  21. include AbstractController::UrlFor
  22. extend ::AbstractController::Railties::RoutesHelpers.with(app.routes)
  23. include app.routes.mounted_helpers
  24. register_interceptors(options.delete(:interceptors))
  25. register_observers(options.delete(:observers))
  26. options.each { |k,v| send("#{k}=", v) }
  27. end
  28. end
  29. initializer "action_mailer.compile_config_methods" do
  30. ActiveSupport.on_load(:action_mailer) do
  31. config.compile_methods! if config.respond_to?(:compile_methods!)
  32. end
  33. end
  34. end
  35. end