resque rails 4.2 deliver_later Mailers

时间:2015-11-13 22:55:10

标签: ruby-on-rails ruby logging resque

我有一个Ruby on Rails应用程序,我需要在面试前一天发送申请人提醒邮件。为此,我计划使用The Rescue Scheduler,我正在使用rails v 4.2。我运行了redis服务器,我的代码如下:

    def sendemails
        @user2=User.new( :firstname=> "Betterlucknexttime",:email=>)
        SendEmailJob.new.perform(@user)
    end

并在sendEmail文件中

    class SendEmailJob < ActiveJob::Base
        queue_as :default
        def perform(user)
            UserMailer.welcome_email(user).deliver_later
        end
    end

在config / developement中我设置了config.active_job.queue_adapter = :resque

我检查了我的日志文件,这就是我所看到的:

  

[ActiveJob]无法记录“enqueue.active_job”事件。   URI :: GID :: MissingModelIdError:无法为用户创建全局ID   没有型号ID。 app / jobs / send_email_job.rb:5:执行中。
  app / controllers / adminusers_controller.rb:45:在sendemails'

我很一般,当我不使用deliver_later选项时,我会立即收到我的电子邮件。但是我需要使用deliver_later来发送这些电子邮件作为将来的提醒。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

由于您正在使用User.new,因此您不会将该用户保存到数据库中。当作业开始时,数据库中没有用户来拉。如果你改为User.create,这应该按预期工作。

以下是描述有效作业及其使用方法的文章的链接:http://www.sitepoint.com/new-rails-shiny-activejob/