使用resque-mailer -RAILS 3发送邮件

时间:2014-02-09 09:33:10

标签: ruby-on-rails ruby-on-rails-3 devise actionmailer resque

我的应用程序正在开发后台发送邮件,但最近我安装了redis和resque以使用resque和resque-mailer,现在没有任何工作。每次我收到一条消息RuntimeError Invalid delivery method :resque。我一直在努力弄清楚什么是错的,因为早些时候我只是在user_mailer.rb中包含了resque-mailer,就是这样,我的邮件正在运行,但现在我不知道我做了什么错。下面是我使用Railscasts for resque安装REDIS后的相关文件。我google搜索很多但我很多次遇到猴子补丁设计,但我不认为我需要这样做,因为我的邮件工作正常而不用担心设计。使用ruby 1.9.3rails 3.2 在尝试使用sidekiq时遇到同样的错误:(

我的宝石文件。

gem 'resque','1.19.0' ,:require => "resque/server"
gem 'resque_mailer'

我的user_mailer.rb

class UserMailer < ActionMailer::Base
  include Resque::Mailer
  default from: "support@mywebsite.com"


def logged_in(user.id)
  Rails.logger.info 'sending mail----------registeration mail----------'
  @user=User.find(user_id)
  p @user
  ###line number 19 is below
  mail(:to => @user.email, :subject => " Hi #{@user.username},You logged-in just now ")
end

应用程序/控制器/用户/设计/ sessions_controller.rb

##enqueue the mailer using resque and send mail asynchronously
###this was working earlier but now its not so i made use of railscasts above to use redis
###UserMailer.logged_in(resource.id).deliver
@user_id=resource.id
Resque.enqueue(UserMailerWorker,@user_id)

现在我使用Railscasts和邮件所做的更改并未发送上述错误

我的工作人员

class UserMailerWorker
  @queue = :user_mailer_job_queue
  def self.perform(user_id)
    p 'usermailer worker sending logged in mail----'
    p user_id
    UserMailer.logged_in(user_id).deliver
  end
end
在resque-web UI中看到的回溯错误---

     localhost.localdomain:8119 on mailer at just now
    Retry or Remove
Class
    UserMailer
Arguments

    "logged_in"
    7

Exception
    RuntimeError
Error
    Invalid delivery method :resque

    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionmailer-3.2.0/lib/action_mailer/delivery_methods.rb:71:in `wrap_delivery_behavior'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionmailer-3.2.0/lib/action_mailer/delivery_methods.rb:83:in `wrap_delivery_behavior!'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionmailer-3.2.0/lib/action_mailer/base.rb:628:in `mail'
    /mnt/hgfs/latest-master/latest/app/mailers/user_mailer.rb:19:in `logged_in'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionpack-3.2.0/lib/abstract_controller/base.rb:167:in `process_action'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionpack-3.2.0/lib/abstract_controller/base.rb:121:in `process'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionpack-3.2.0/lib/abstract_controller/rendering.rb:45:in `process'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionmailer-3.2.0/lib/action_mailer/base.rb:456:in `process'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/actionmailer-3.2.0/lib/action_mailer/base.rb:451:in `initialize'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/resque_mailer-2.2.6/lib/resque_mailer.rb:48:in `new'
    /usr/local/rvm/gems/ruby-1.9.3-head@latest/gems/resque_mailer-2.2.6/lib/resque_mailer.rb:48:in `perform'

1 个答案:

答案 0 :(得分:1)

删除并重置我的应用程序后......我开始知道为什么我收到此错误。因为我在使用{{1}启动redis后没有启动resque工作以及redis.so和redis-server使用resque ...我的异步邮件只是通过包含bundle exec rake resque:work QUEUE='*'

开始工作而没有任何问题
相关问题