和 rails 4.2 deliver_later 邮寄者
resque rails 4.2 deliver_later Mailers
我有一份 Ruby 关于 Rails 的申请,我需要在面试前一天发送申请人提醒邮件。为此,我计划使用 The Rescue Scheduler,我使用的是 rails v 4.2。我有运行redis服务器我的代码如下:
def sendemails
@user2=User.new( :firstname=> "Betterlucknexttime",:email=>)
SendEmailJob.new.perform(@user)
end
并在发送电子邮件文件中
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] Could not log "enqueue.active_job" event.
URI::GID::MissingModelIdError: Unable to create a Global ID for User
without a model id. app/jobs/send_email_job.rb:5:in perform'
app/controllers/adminusers_controller.rb:45:in sendemails'
一般来说,当我不使用 deliver_later 选项时,我的电子邮件会立即送达。但是,我需要使用 deliver_later 来发送这些电子邮件作为将来的提醒。非常感谢您的帮助!
因为您正在做 User.new,所以您没有将该用户保存到数据库中。当作业开始时,数据库中没有用户可以拉取。如果您改为 User.create,这应该会按预期工作。
这里有一篇 link 到一篇描述活动作业及其使用方法的文章:http://www.sitepoint.com/new-rails-shiny-activejob/
我有一份 Ruby 关于 Rails 的申请,我需要在面试前一天发送申请人提醒邮件。为此,我计划使用 The Rescue Scheduler,我使用的是 rails v 4.2。我有运行redis服务器我的代码如下:
def sendemails
@user2=User.new( :firstname=> "Betterlucknexttime",:email=>)
SendEmailJob.new.perform(@user)
end
并在发送电子邮件文件中
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] Could not log "enqueue.active_job" event. URI::GID::MissingModelIdError: Unable to create a Global ID for User without a model id. app/jobs/send_email_job.rb:5:in perform'
app/controllers/adminusers_controller.rb:45:in sendemails'
一般来说,当我不使用 deliver_later 选项时,我的电子邮件会立即送达。但是,我需要使用 deliver_later 来发送这些电子邮件作为将来的提醒。非常感谢您的帮助!
因为您正在做 User.new,所以您没有将该用户保存到数据库中。当作业开始时,数据库中没有用户可以拉取。如果您改为 User.create,这应该会按预期工作。
这里有一篇 link 到一篇描述活动作业及其使用方法的文章:http://www.sitepoint.com/new-rails-shiny-activejob/