0

アプリケーションを本番モードで実行すると、コンソール内で次のようになります。

    /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を見てきました。私の設定は次のとおりであるため、私はその間違いを犯していないようです。

環境.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

これは間違っているようですが

4

1 に答える 1

1

プロダクションでエラーが発生する理由はわかりませんが、この問題を修正する方法を教えてください。

Rails 3.2.11 アプリでこのシナリオを複製したところ、本番環境で同じエラーが発生しました。考えられる修正は 2 つあります。

  1. 変数DEFAULT_FROMをenvironments/production.rbに移動します
  2. メール設定の初期化ファイル (config/initializers/mail_settings.rb) を作成し、この変数 DEFAULT_FROM をそのファイルに入れます。

    2 番目のアプローチは、メーラーの構成と変数が開発環境と運用環境の両方で利用できるため、きちんとしています。これらのアプローチはどちらも、開発/展開サーバーを再起動する必要があります。

    お役に立てれば。

于 2013-02-12T12:05:58.167 に答える