Rails允许用户在运行时配置ActionMailer

时间:2012-06-08 09:16:14

标签: ruby-on-rails actionmailer

我想创建一个Rails应用程序,在第一次请求时,用户将被定向到设置配置向导。在此向导中,他们需要为ActionMailer配置他们的电子邮件设置,即。 SMTP服务器设置/凭据。

如何以编程方式更新ActionMailer的配置条目(我假设Application.rb需要更新)?

如何让ActionMailer重新加载这些更新的配置设置?我注意到在应用程序启动/初始化时加载了很多这些设置,我不想重新启动Rails应用程序以使这些更改生效。

1 个答案:

答案 0 :(得分:7)

只需将设置存储到会话中,然后在为AC过滤之前执行此操作:

class ApplicationController < ActionController::Base

    before_filter :set_mailer_settings

    private

      def set_mailer_settings

        ActionMailer::Base.smtp_settings = {
          :address  => session[:smtp_address],
          :port  => session[:smtp_port],
          :domain => session[:smtp_domain],
          :authentication => session[:smtp_authentication],
          :user_name => session[:smtp_user_name],
          :password => session[:smtp_password]
        }

      end

end