问题标签 [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.
ruby-on-rails - 带有 ActiveUUID 的 ActiveJob::SerializationError
我收到以下错误:
使用这些宝石时:
- 活动用户界面
- 回形针
- 延迟作业
- 延迟回形针
这是我的实际模型代码:
所以我猜测错误来自activeuuid 或delayed_paperclip,因为ActiveJob 无法处理或识别对象。
有没有人知道如何解决这个问题?
ruby-on-rails - 无法将 CollectionProxy 对象传递给 ActiveJob
我需要在后台标记一组消息(我正在使用delayed_job gem),因为在前台需要一些时间。所以我创建了一个ActiveJob
类MarkMessagesAsReadJob
,并传递了它user
和messages
变量,以标记所有的messages
读取user
。
在我的 ActiveJob 课程中,我执行任务。
但是,当我尝试执行任务时,出现错误 ActiveJob::SerializationError (Unsupported argument type: ActiveRecord::Associations::CollectionProxy):
我读到我们只能将支持的类型传递给 ActiveJob,我认为它不能序列化 CollectionProxy 对象。我该如何解决/解决这个问题?
PS:我考虑过
但是我认为一一标记它们非常昂贵。
ruby-on-rails - 在 ActiveJob 中,如何捕获任何异常
异常处理的ActiveJob 文档提供了如何在作业上下文中执行异常处理的示例:
我在我正在构建和捕获某些特定异常的应用程序中使用此技术。我的问题是,如何捕获所有异常?
我正在捕获各种异常并以每种方式执行相同的过程,所以我想干掉我的代码,而且在我当前的实现中,某些异常被忽略,这意味着在某些情况下我的工作会默默地失败。
如何使用 ActiveJob 捕获任何通用异常?
ruby-on-rails - Ruby/Rails:ActiveJob 的未定义方法“set”
我创建了一个这样的工作:
那使用我的邮件:
我的控制器:
我不断收到以下错误:NoMethodError(SendEmailJob:Class 的未定义方法“设置”):
编辑 config/application.rb 需要 File.expand_path('../boot', FILE )
导轨 4.1.8
ruby-on-rails - 电子邮件未在 Heroku 上使用 resque 发送
根据heroku日志,我延迟发送电子邮件的工作已排队并正确处理,但我从未真正收到电子邮件。它在本地使用相同的 smtp 设置按预期工作,所以我不知道问题可能是什么。
以下是日志的摘录:
排队:
加工:
production.rb 和 development.rb 中的 SMTP 设置:
ruby-on-rails - Deliver_later 不重试
如何使用 activeMailer 和禁用重试deliver_later
?
我最近遇到了一个问题,我的一个邮件方法由于视图中的语法错误而静默失败。我们deliver_later
用来发送消息
当它最终被发现并修复时,所有失败的旧消息都被重新尝试然后传递。这些是时间敏感消息,不应重试。
我似乎找不到任何方法来做类似的事情.deliver_later(retry: false)
会使用deliver_now
解决这个问题吗?
我使用delayed_job 作为我的消息队列。
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 助手呢?
ruby-on-rails - ActiveJob 是否有具有特定优先级的队列?
查看下面的作业,我会假设该作业在low_priority
队列中运行。
我同意这一点,但这只是队列的名称,对吗?它实际上与优先级无关。例如,如果我创建了一个名为队列的作业,:my_queue
它将被视为具有与:low_priority
队列相同的优先级。
从文档中我找不到任何表明我可以优先考虑排队的作业的信息。我知道delayed_jobs 有这个功能,但是我在active_job 中没有找到。
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”}
为什么我的适配器不喜欢邮寄作业,我该如何解决?
ruby-on-rails - Ruby:在基类的上下文中执行方法
我有大约 20 个不同的Active Jobs,我现在意识到它们都需要一种before_perform
方法来在控制器的上下文之外设置 PaperTrail 内容。
我打算把这个before_perform
方法放在一个助手中,然后在每个作业中包含这个助手,但我得到了一个错误:
MyApp:JobHelpers:Module 的未定义方法“before_perform”
我认为这是因为有问题的模块只是一个模块,而不是一个活动作业。如何避免before_perform
在每个活动作业中重复相同的 4 行方法?
Job_helper:
工作: