似乎当我在生产模式下运行我的应用程序时,我在控制台中获得以下内容:
/home/Desktop/Portal/app/mailers/holiday_mailer.rb:2:in
`<class:HolidayMailer>': uninitialized constant HolidayMailer::DEFAULT_FROM (NameError)
我查看了以下问题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 = "portal@gmail.com"
假日邮件
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
看来这是错误的
答案 0 :(得分:1)
我不知道为什么它会在制作中出错,但我可以告诉你如何解决这个问题。
我在我的rails 3.2.11应用程序中复制了这个场景,我在生产中遇到了同样的错误。有两种可能的解决方法。
为邮件设置(config / initializers / mail_settings.rb)创建初始化文件,并将此变量DEFAULT_FROM放入该文件中。
第二种方法很简洁,因为它的邮件和变量配置将在开发和生产环境中都可用。这两种方法都需要您重新启动开发/部署服务器。
希望这会有所帮助。