2012-06-08 29 views
1

我想創建一個Rails應用程序,在第一次請求時,用戶被引導至安裝配置嚮導。在這個嚮導中,他們需要爲ActionMailer配置他們的電子郵件設置,例如。 SMTP服務器設置/憑據。Rails允許用戶在運行時配置ActionMailer

如何以編程方式更新ActionMailer的配置條目(我假設需要更新Application.rb)?

我該如何讓ActionMailer重新加載這些更新的配置設置?我注意到很多這些設置都是在應用程序啓動/初始化時加載的,我不想重新啓動Rails應用程序以使這些更改生效。

+0

它可能不是很明顯,用戶給了這些SMTP設置應然後作爲整個應用程序的全局SMTP設置。用戶被允許設置一個站點範圍的配置。 – KrisG

回答

7

只是存儲設置成會議和您的交流濾波器之前做這個裏面:

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 
+1

難道我不想將它存儲在比會話更持久的地方嗎?這對於每個控制器上的每個請求設置ActionMailer配置都不是非常低效,儘管事實上我可能只使用來自幾個位置的ActionMailer,通常也是從後臺進程調用。 – KrisG

+0

@KrisG這是常見的問題 - 在AC中的過濾器不是一個設置配置的好地方,但我不知道任何其他解決方案...您可以將設置存儲到數據庫而不是會話中,我剛剛在那裏做了一個快速樣品。 – ABrukish

相關問題