2013-02-12 29 views
0

看来,当我跑我在生产模式下的应用,我让我的控制台中执行以下操作:未初始化的常量邮件DEFAULT_FROM

/home/Desktop/Portal/app/mailers/holiday_mailer.rb:2:in 
`<class:HolidayMailer>': uninitialized constant HolidayMailer::DEFAULT_FROM (NameError) 

我已经看着下面SO质疑Rails 3 Action Mailer uninitialized constant。看来,我的设立是遵循我没有犯了那个错误:

的environment.rb

require File.expand_path('../application', __FILE__) 

# Initialize the rails application 
Portal::Application.initialize! 
ActionMailer::Base.delivery_method = :smtp 
DEFAULT_FROM = "[email protected]" 

假期邮件

class HolidayMailer < ActionMailer::Base 
    default :from => DEFAULT_FROM 

    def holiday_confirmation(holiday) 
    @holiday = holiday 
    mail(:to => holiday.user.email, :subject => "Your Absence Request") 
    end 
end 

假日控制器

def update() 
    admin = User.find(current_user.role? :administrator) 
    holiday = Holiday.find(params[:id]) 
    user = User.find(id = holiday.user_id) 

    if holiday.update_attributes(params[:holiday]) 
     if holiday.state == "approved" 
     user.absentdays = user.absentdays - (holiday.days_used).to_i 
     user.save 
     end 
     redirect_to absence_path, :notice => "request updated!" 
     #email the user to tell them the state of their holiday 
     HolidayMailer.holiday_confirmation(holiday).deliver 
    else 
     render 'edit' 
    end 
    end 

看起来虽然这是错误的

回答

1

我不知道它为什么在生产中抛出一个错误,但我可以告诉你如何解决这个问题。

我在我的rails 3.2.11应用程序中复制了这个场景,并且我在生产中遇到了同样的错误。有两种可能的修复方法。

  1. 移动可变DEFAULT_FROM到环境/ production.rb
  2. 让邮件设置(配置/初始化/ mail_settings.rb)的初始化文件,并把这个变量DEFAULT_FROM在该文件中。

    第二种方法很简洁,因为它的配置文件和变量在开发和生产环境中均可用。这两种方法都需要您重新启动您的开发/部署服务器。

    希望这会有所帮助。

+0

第二个选项到最后,你的权利它更清洁的方式欢呼 – David 2013-02-13 04:01:41