问题标签 [rails-activejob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
587 浏览

ruby-on-rails - 带有 ActiveUUID 的 ActiveJob::SerializationError

我收到以下错误:

使用这些宝石时:

  • 活动用户界面
  • 回形针
  • 延迟作业
  • 延迟回形针

这是我的实际模型代码:

所以我猜测错误来自activeuuid 或delayed_pa​​perclip,因为ActiveJob 无法处理或识别对象。

有没有人知道如何解决这个问题?

0 投票
3 回答
3079 浏览

ruby-on-rails - 无法将 CollectionProxy 对象传递给 ActiveJob

我需要在后台标记一组消息(我正在使用delayed_job gem),因为在前台需要一些时间。所以我创建了一个ActiveJobMarkMessagesAsReadJob,并传递了它usermessages变量,以标记所有的messages读取user

在我的 ActiveJob 课程中,我执行任务。

但是,当我尝试执行任务时,出现错误 ActiveJob::SerializationError (Unsupported argument type: ActiveRecord::Associations::CollectionProxy):

我读到我们只能将支持的类型传递给 ActiveJob,我认为它不能序列化 CollectionProxy 对象。我该如何解决/解决这个问题?

PS:我考虑过

但是我认为一一标记它们非常昂贵。

0 投票
1 回答
4160 浏览

ruby-on-rails - 在 ActiveJob 中,如何捕获任何异常

异常处理的ActiveJob 文档提供了如何在作业上下文中执行异常处理的示例:

我在我正在构建和捕获某些特定异常的应用程序中使用此技术。我的问题是,如何捕获所有异常?

我正在捕获各种异常并以每种方式执行相同的过程,所以我想干掉我的代码,而且在我当前的实现中,某些异常被忽略,这意味着在某些情况下我的工作会默默地失败。

如何使用 ActiveJob 捕获任何通用异常?

0 投票
2 回答
1719 浏览

ruby-on-rails - Ruby/Rails:ActiveJob 的未定义方法“set”

我创建了一个这样的工作:

那使用我的邮件:

我的控制器:

我不断收到以下错误:NoMethodError(SendEmailJob:Class 的未定义方法“设置”):

编辑 config/application.rb 需要 File.expand_path('../boot', FILE )

导轨 4.1.8

0 投票
1 回答
163 浏览

ruby-on-rails - 电子邮件未在 Heroku 上使用 resque 发送

根据heroku日志,我延迟发送电子邮件的工作已排队并正确处理,但我从未真正收到电子邮件。它在本地使用相同的 smtp 设置按预期工作,所以我不知道问题可能是什么。

以下是日志的摘录:

排队:

加工:

production.rb 和 development.rb 中的 SMTP 设置:

0 投票
1 回答
1706 浏览

ruby-on-rails - Deliver_later 不重试

如何使用 activeMailer 和禁用重试deliver_later

我最近遇到了一个问题,我的一个邮件方法由于视图中的语法错误而静默失败。我们deliver_later用来发送消息

当它最终被发现并修复时,所有失败的旧消息都被重新尝试然后传递。这些是时间敏感消息,不应重试。

我似乎找不到任何方法来做类似的事情.deliver_later(retry: false) 会使用deliver_now解决这个问题吗?

我使用delayed_job 作为我的消息队列。

0 投票
2 回答
1453 浏览

ruby-on-rails - 如何在 ActiveJob 作业中使用 url_for / polymorphic_url?

我有一个从 ActiveJob 作业内部调用的通知服务(使用延迟作业后端)。每个通知的主题是一个模型实例,可以是几个不同类中的任何一个。为了方便收件人,我需要包含指向该对象视图的链接。

这不起作用,因为 url_for 不是作业上下文中可用的方法:

在此代码的先前且更有限的版本中,我使用Rails.application.routes.url_helpers.model_name_url(object)了 ,但这是特定于模型的。似乎需要Rails.application.routes.url_for一个控制器/动作规范,而不是一个模型。

在我可以使用的邮件中url_for(object),它做正确的事情,无论模型类如何。那么我如何在工作中访问多态 url 助手呢?

0 投票
1 回答
4304 浏览

ruby-on-rails - ActiveJob 是否有具有特定优先级的队列?

查看下面的作业,我会假设该作业在low_priority队列中运行。

我同意这一点,但这只是队列的名称,对吗?它实际上与优先级无关。例如,如果我创建了一个名为队列的作业,:my_queue它将被视为具有与:low_priority队列相同的优先级。

从文档中我找不到任何表明我可以优先考虑排队的作业的信息。我知道delayed_jobs 有这个功能,但是我在active_job 中没有找到。

0 投票
0 回答
292 浏览

ruby-on-rails - 自定义 ActiveJob 适配器不会处理邮件作业

我有一个我写的 ActiveJob 适配器,如下所示:

当我通过它运行邮件程序时(例如UserMailer.registration_email(user).deliver_now),我的日志输出如下所示:

处理作业 e0f6afac-7b95-40c7-89d0-d9c63b808198 参数数量错误(1 表示 3+){“job_class”=>“ActionMailer::DeliveryJob”,“job_id”=>“e0f6afac-7b95-40c7-89d0-d9c63b808198” , "queue_name"=>"mailers", "arguments"=>["UserMailer", "registration_email", "deliver_now", {"_aj_globalid"=>"gid://my-cms/RetailUser/863"}], “语言环境”=>“en”}

为什么我的适配器不喜欢邮寄作业,我该如何解决?

0 投票
2 回答
744 浏览

ruby-on-rails - Ruby:在基类的上下文中执行方法

我有大约 20 个不同的Active Jobs,我现在意识到它们都需要一种before_perform方法来在控制器的上下文之外设置 PaperTrail 内容

我打算把这个before_perform方法放在一个助手中,然后在每个作业中包含这个助手,但我得到了一个错误:

MyApp:JobHelpers:Module 的未定义方法“before_perform”

我认为这是因为有问题的模块只是一个模块,而不是一个活动作业。如何避免before_perform在每个活动作业中重复相同的 4 行方法?

Job_helper:

工作: