Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 获得';使用MyMailer.delay.mailer_操作(args)延迟电子邮件的发送;错误_Ruby On Rails_Actionmailer_Delayed Job - Fatal编程技术网

Ruby on rails 获得';使用MyMailer.delay.mailer_操作(args)延迟电子邮件的发送;错误

Ruby on rails 获得';使用MyMailer.delay.mailer_操作(args)延迟电子邮件的发送;错误,ruby-on-rails,actionmailer,delayed-job,Ruby On Rails,Actionmailer,Delayed Job,我收到一个奇怪的错误:“使用MyMailer.delay.mailer_操作(args)延迟发送电子邮件。”但我似乎可以找到它的来源: app/mailers/user\u notifier.rb class UserNotifier < ActionMailer::Base default from: "test@testing.com" def signup_email(user) @user = user mail(to: @user.email, subj

我收到一个奇怪的错误:“使用MyMailer.delay.mailer_操作(args)延迟发送电子邮件。”但我似乎可以找到它的来源:

app/mailers/user\u notifier.rb

class UserNotifier < ActionMailer::Base
  default from: "test@testing.com"

  def signup_email(user)
    @user = user
    mail(to: @user.email, subject: t("mailer.signup.subject"))
  end

  ...
end

它以前能用,但以前有时坏了。我还是不明白。任何想法都将不胜感激!谢谢。

我想你把它倒过来了:

UserNotifier.signup_email(user).delay.deliver
应该是

UserNotifier.delay.signup_email(user)

我想你把它倒过来了:

UserNotifier.signup_email(user).delay.deliver
应该是

UserNotifier.delay.signup_email(user)

当您使用Delayed_作业时,您可以访问
.dealy
方法,然后您可以使用action mailer方法,如
.deliver\u later
延迟发送电子邮件

在项目中添加延迟作业的简单方法:

  • 在您的文件中添加:

    gem“延迟的作业活动记录”

    gem“守护进程”

  • 使用以下命令创建文件“config/initializers/delayed_job_config.rb”:

  • 在终端:

    $bin/rails生成延迟作业:活动记录

    $bin/rake db:migrate

    $bundle

    $bin/delayed_作业启动

  • 可选择查看日志:
    tail-f log/delayed_job.log

  • 在项目中的某些邮件程序中(您可以在rails控制台中执行此操作):

    sometailer.delay.somethod

  • 您的队列将在60秒内处理。您可以删除属性
    Delayed::Worker.sleep\u delay=60
    以立即处理

    否则,您可以将应用程序配置为使用延迟作业,就像活动作业和进程在后台工作的适配器一样。然后需要将
    config.active\u job.queue\u adapter=:delayed\u job
    。此模式通常用于发送不需要使用
    的电子邮件。延迟
    ,而是调用mailer操作和
    。稍后交付
    ,例如:
    MyMailer.your\u方法。稍后交付
    。在此模式下,活动作业将电子邮件排入延迟作业队列

    欢迎提出问题和建议


    参考资料:

    当您使用延迟作业时,您可以访问
    .dealy
    方法,然后您可以使用类似
    .deliver的操作邮件发送方法延迟电子邮件的发送

    在项目中添加延迟作业的简单方法:

  • 在您的文件中添加:

    gem“延迟的作业活动记录”

    gem“守护进程”

  • 使用以下命令创建文件“config/initializers/delayed_job_config.rb”:

  • 在终端:

    $bin/rails生成延迟作业:活动记录

    $bin/rake db:migrate

    $bundle

    $bin/delayed_作业启动

  • 可选择查看日志:
    tail-f log/delayed_job.log

  • 在项目中的某些邮件程序中(您可以在rails控制台中执行此操作):

    sometailer.delay.somethod

  • 您的队列将在60秒内处理。您可以删除属性
    Delayed::Worker.sleep\u delay=60
    以立即处理

    否则,您可以将应用程序配置为使用延迟作业,就像活动作业和进程在后台工作的适配器一样。然后需要将
    config.active\u job.queue\u adapter=:delayed\u job
    。此模式通常用于发送不需要使用
    的电子邮件。延迟
    ,而是调用mailer操作和
    。稍后交付
    ,例如:
    MyMailer.your\u方法。稍后交付
    。在此模式下,活动作业将电子邮件排入延迟作业队列

    欢迎提出问题和建议


    参考资料:

    谢谢@jeremy.clark。所以我不需要打电话给
    deliver
    ?我需要交付,因为我正在尝试获取电子邮件对象,将css注入其主体,然后交付。您应该阅读延迟的工作,它正在处理您场景中的繁重工作()。我帮助纠正的线路基本上安排了延迟的工作。您需要确保延迟的作业正在运行和处理作业。您可以使用
    rake jobs:work
    强制处理作业。基本上,延迟作业将在作业拿起并执行后为您执行
    .deliver
    方法。谢谢@jeremy.clark。所以我不需要打电话给
    deliver
    ?我需要交付,因为我正在尝试获取电子邮件对象,将css注入其主体,然后交付。您应该阅读延迟的工作,它正在处理您场景中的繁重工作()。我帮助纠正的线路基本上安排了延迟的工作。您需要确保延迟的作业正在运行和处理作业。您可以使用
    rake jobs:work
    强制处理作业。基本上,延迟作业将在拾取并执行作业后为您执行
    .deliver
    方法。