【问题标题】:uninitialized constant mailer DEFAULT_FROM未初始化的常量邮件程序 DEFAULT_FROM
【发布时间】:2013-02-12 07:42:48
【问题描述】:

似乎当我在生产模式下运行我的应用程序时,我在控制台中得到以下信息:

    /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 = "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

这似乎是错误的

【问题讨论】:

    标签: ruby-on-rails actionmailer


    【解决方案1】:

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

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

    1. 将变量 DEFAULT_FROM 移动到 environment/production.rb 中
    2. 为邮件设置创建一个初始化文件 (config/initializers/mail_settings.rb) 并将此变量 DEFAULT_FROM 放入该文件中。

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

      希望这会有所帮助。

    【讨论】:

    • 最后选择了第二个选项,你的权利是更干净的方式欢呼
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2011-12-26
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多