问题标签 [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 投票
2 回答
1728 浏览

ruby-on-rails - Rails Active Job 使用情况,或使用 Rails 自动运行 watcher 线程

很高兴看到 Rails 4.2 带有 Active Job 作为后台作业的通用接口。但是我在文档中找不到如何启动工人。似乎该文档仍然不成熟(例如,正确版本的 Sneakers 仅在 Rails' 中提及Gemfile),因此我不确定“正在运行的工人”部分是否不在 Active Job 中,或者只是在文档中未提及。

因此,对于 Active Job,我是否仍需要手动启动作业观察者线程,例如sidekiq或 在我的情况下,rake sneakers:run?如果是这样,我应该把这些命令放在哪里让rails server在开发环境中自动运行这些并行任务?

0 投票
4 回答
27072 浏览

ruby-on-rails - 如何在 Active Job (Rails 4.2) 中安排重复作业?

在 Rails 中找到了这个 Schedule one-time 作业, 但这仅显示了如何安排 one-time。我有兴趣安排一个经常性的工作。

Delayed_job 有这个

我如何在 Rails 4.2/Active Job 中做类似的事情?

0 投票
2 回答
2813 浏览

ruby-on-rails - 如何配置 ActiveJob 以使用 Resque?

我在 Rails 4.2 和 Resque 中使用 ActiveJob 时遇到了一些困难。

我已经安装了 redis,并且在我的 Gemfile 中添加了 resque 和 resque-scheduler。

我创建了一个测试作业 - 它只是生成的文件

但我不断收到有关未定义 ActiveJob 的错误

或当我像这样切换适配器时缺少方法

我收到这个错误

我什至看过源代码,但我不知道。它只是调用超级。

https://github.com/rails/rails/blob/master/railties/lib/rails/railtie/configuration.rb#L95

我错过了什么?为什么队列适配器不起作用?有谁知道如何解决这一问题?

0 投票
3 回答
3556 浏览

ruby-on-rails - Resque-Scheduler 不能在 Rails 4.2 中使用 ActiveJob

有没有人能够在 Rails 4.2 中获得预定的工作?

我正在使用 resque,并且正在尝试使用 resque-scheduler 来安排作业。我有一个计划被加载并且计划程序运行,甚至看起来它正在运行作业,但它没有做任何事情。

我可以将这样的工作排入队列并得到处理。

我在工作日志中得到这个输出

但是当我尝试安排一份工作时,看起来他们正在排队,但他们没有做任何事情。

这是 schedule.yml

这是计划作业的输出。

阅读此http://dev.mikamai.com/post/96343027199/rails-4-2-new-gems-active-job-and-global-id后 ,我怀​​疑它与 ActiveJob 和 GlobalId 有关。

看看排队的区别

与预定

工作本身是通过

它们看起来像这样:

对此的任何帮助将不胜感激,并提前致谢。

********* 更新 *********

我已经删除了 action_job railtie,我只使用 Resque 和 Resque-Scheduler,并且计划的作业现在正在工作。所以这似乎与 ActionJob/GlobalId 有关。我在 rails 项目中打开了一个问题。希望他们能尽快修复它。

****** 第二次更新 ********* 我得到了这方面的更新。在 ActiveJob 代码库工作的 Cristianbica 这么说。“到目前为止,我们还没有考虑过重复工作,我们不支持这个,因为没有外部 gem 的适配器都不支持这个。然而,这是一个非常好的功能,但我认为我们无法及时实现4.2. 另外我不确定它是否适合包含在 rails 中”

0 投票
9 回答
41445 浏览

ruby-on-rails - 如何使用 Rspec 检查 ActiveJob 中排队的内容

我正在使用 Rails API 应用程序中的 reset_password 方法。当这个端点被命中时,一个 ActiveJob 被排队,它将向 Mandrill(我们的事务性电子邮件客户端)发出一个请求。我目前正在尝试编写测试以确保在命中控制器端点时 ActiveJob 正确排队。

send_reset_password_instructions 在创建 ActiveJob 之前创建一些 url 等,其代码如下:

目前我们没有为 ActiveJob 使用任何适配器,所以我只想用 Rspec 检查 ActiveJob 是否已排队。

目前我的测试看起来像这样(我正在使用工厂女孩来创建用户):

一切都在现实中有效,我只需要创建测试!

我正在使用 ruby​​ 2.1.2 和 rails 4.1.6。

我在网络上的任何地方都看不到有关如何对此进行测试的任何文档或帮助,因此将不胜感激任何帮助!

0 投票
3 回答
8519 浏览

ruby-on-rails - 带有 ActiveJob gem 的 Rails 4.1 - 未初始化的常量 ActiveJob

我已经按照EngineYard的积极工作入门文章进行了操作。文章指出:

如果您想要默认可用的 Active Job,您将需要 Rails 4.2.0beta1 或更高版本(在旧版本的 Rails 中,您可以将其作为 gem 来使用)

我正在尝试在我的 Rails 4.1 项目中使用 ActiveJob。我将 ActiveJob 添加到我的 gemfilegem 'activejob'中。根据文章,我有:

但是,当我运行时,出现rails server以下错误:

config/initializers/active_job.rb:1:in': 未初始化的常量 ActiveJob (NameError)`

编辑- 修正了拼写错误“gem active job”

更新 1

按照下面 solydest 的建议,添加require 'active_job'到 application.rb 允许我不再收到uninitialized constant ActiveJob错误,而是undefined method perform_later'在我尝试调用我的工作时收到错误。我正在遵循边缘导轨指南,并使用类似于以下的代码将我的工作排入队列:

我的工作课程的开始:

0 投票
1 回答
1229 浏览

ruby-on-rails - ActiveJob 在生产环境中不使用 sidekiq

我已将我的应用程序升级到 Rails 版本 4.2.0.rc2。我尝试使用 sidekiq 作为 active_job 后端。它在开发环境中工作正常,但在生产环境中它使用 Inline(mailers) 而不是 Sidekiq。

rails server -e 开发

rails sever -e 生产

在控制台上

我究竟做错了什么?

0 投票
1 回答
2487 浏览

ruby-on-rails - 使用 Rails 4 和设计的活动作业

我正在尝试使用 Rails 4 和 Devise 设置活动作业。我愿意接受任何教程,如果有的话(无法通过我的搜索找到。)

我知道有一个Devise Async gem,但它没有涵盖其中的 Active Job。也就是说,我发现这个 gem处于开发阶段,但我遇到了一个uninitialized constant Devise::Async::Backend::Base (NameError)错误。(可能是我在实施它时很轻松)。

欢迎任何建议。我希望我不必创建新的控制器方法。

0 投票
2 回答
652 浏览

ruby-on-rails - MonkeyPatching ActiveJobs

我在修补 ActiveJobs 的部分时遇到问题。我在 config/initializers/extensions/arguements.rb 中有以下代码

基本上,我正在尝试添加对日期/时间对象的基本支持,以便在 ActionMailer#deliver_later 创建的 ActiveJob 中使用

加载 rails 应用程序后,我可以看到我的白名单已加载,但是当我在邮件程序上调用 Deliver_later 方法时,原始白名单会覆盖我的补丁。

如何使修改后的白名单保持不变?我很确定错误源于原始的 ActiveJob::Arguments 在调用 Deliver_later 之前没有加载,因此在我的补丁之后加载并覆盖它,尽管我不知道如何解决这个问题。

0 投票
13 回答
36358 浏览

ruby-on-rails - 如何使用 rspec 测试 ActionMailer Deliver_later

尝试使用delayed_job_active_record 升级到Rails 4.2。我没有为测试环境设置 delay_job 后端,因为我认为作业会立即执行。

我正在尝试使用 RSpec 测试新的“deliver_later”方法,但我不确定如何。

旧控制器代码:

新控制器代码:

我曾经这样测试它:

现在我使用它会出错。(双“邮件程序”收到意外消息:deliver_later with (no args))

只是

'undefined method `deliver_later' for nil:NilClass' 也失败了

我尝试了一些示例,让您可以查看是否使用 ActiveJob 中的 test_helper 将作业排入队列,但我还没有设法测试正确的作业是否已排队。

如果包含 test_helper,这将通过,但它不允许我检查它是否是正在发送的正确电子邮件。

我想做的是:

  • 测试正确的电子邮件是否已排队(或在测试环境中立即执行)
  • 使用正确的参数(@user)

有任何想法吗??谢谢