【发布时间】:2014-07-30 17:05:18
【问题描述】:
我的应用程序有问题,尝试在后台发送电子邮件时收到错误uninitialized constant AnswersController::LazyDoer,我不知道为什么它不起作用,有什么建议吗?
我的工人在app/workers/lazy_doer.rb
这是我的控制器:
class AnswersController < ApplicationController
before_action :authenticate_user!
before_action :set_question, except: [:adding_likes,:accept]
def create
@answer = Answer.new(answer_params)
@answer.user_id = current_user.id
@answer.question_id = @question.id
@question_owner = User.find(@question.user_id)
if @answer.save
LazyDoer.perform_async(@question_owner,current_user,@answer,@question)
redirect_to question_path(@question), notice: "Answer was successfully created."
else
render(:template => "questions/show", alert: "There was an error when adding answer.")
end
end
这里有我的工人:
class LazyDoer
include Sidekiq::Worker
sidekiq_options retry: false
def perform(question_owner,current_user,answer,question)
@question_owner = question_owner
@current_user = current_user
@answer = answer
@question = question
UserMailer.send_email(@question_owner,@current_user,@answer,@question).deliver
end
end
编辑:
我让我的 LazyDoer 工作人员完全运行,但现在我无法通过它发送电子邮件。最重要的是,MAILER 可以在没有 SIDEKIQ 的情况下完美运行。这是sidekiq内部的错误:
2014-07-30T19:28:38.479Z 4317 TID-amn3w LazyDoer JID-3e465606b1d5728181002af0 INFO: start
2014-07-30T19:28:38.480Z 4317 TID-amn3w LazyDoer JID-3e465606b1d5728181002af0 INFO: fail: 0.001 sec
2014-07-30T19:28:38.481Z 4317 TID-amn3w WARN: {"retry"=>false, "queue"=>"default", "class"=>"LazyDoer", "args"=>["matthew.kilan@gmail.com", "matthew.kilan@gmail.com", "#<Answer:0x000000045fd148>", "#<Question:0x000000045fe728>"], "jid"=>"3e465606b1d5728181002af0", "enqueued_at"=>1406748518.4762628}
2014-07-30T19:28:38.481Z 4317 TID-amn3w WARN: undefined method `email' for "matthew.kilan@gmail.com":String
2014-07-30T19:28:38.481Z 4317 TID-amn3w WARN: /home/mateusz/Pulpit/Aptana3_Workspace/challenge_app/app/mailers/user_mailer.rb:9:in `send_email'
这里有我的邮件:
class UserMailer < ActionMailer::Base
default from: "matthew.kilan@gmail.com"
def send_email(question_owner,cur_user,answer,question)
@question_owner = question_owner
@cur_user = cur_user
@answer = answer
@question = question
mail(to: @question_owner.email, subject: "Answer added to your question:")
end
def accepted_email(user,answer,question)
@user = user
@answer = answer
@question = question
mail(to: @user.email, subject: "Your answer has been accepted")
end
end
【问题讨论】:
-
你重启服务器了吗?另外,文件名和位置是什么?
-
我成功了,我刚刚重新启动了我的电脑,现在一切正常,我的应用程序可以看到并与 LazyDoer 工作人员一起工作,但现在我遇到了不同的问题,使用 sidekiq 发送电子邮件时出现错误。您可以在我刚刚编辑的帖子中看到它。
标签: ruby-on-rails-4 sidekiq ruby-on-rails-4.1