问题标签 [sucker-punch]

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 投票
0 回答
116 浏览

ruby-on-rails-4 - 在自定义初始化程序中指定时,Rails ActiveJob 未使用正确的适配器

我正在尝试让 ActiveJob 在 config/initilizers/sucker_punch.rb 中使用带有以下代码的 Sucker-punch 适配器

有了这个代码,ActiveJob 仍然使用内联适配器。如果我将此代码移动到 config/application.rb 中,它就没有问题。

我可以从我的自定义初始化程序登录,所以我知道它正在被调用。

版本:

  • 鲁迪 2.2.1
  • 导轨 4.2.1
  • 吸盘拳 1.4.0

有人可以帮忙吗。

谢谢!

0 投票
1 回答
644 浏览

ruby-on-rails-4 - Sucker_punch 错误或未正确运行后台作业

我有一个分类模型,我使用 after_create 回调来检查用户的关键字并发送电子邮件通知。

此电子邮件由后台作业使用 ActiveJobs 和 Sucker_punch 作为后台驱动程序发送。

我在日志中看到 3 个作业正在排队:

但我只收到了2封电子邮件...

我在日志中看到如下错误:

模型:

工作:

知道会发生什么吗?

先谢谢了

0 投票
0 回答
431 浏览

ruby-on-rails - 使用 connection_pool 块在 Rails 中进行吸盘测试,导致连接超时

提前感谢您的友好回复。

在工作中,我们使用Sucker Punch gem 作为 Rails 应用程序来发送电子邮件和其他我们想要异步执行的操作。

我们实现了几个没有问题的演员,甚至成功地为他们编写了一些测试,使用推荐的配置(sucker_punch/testing/inline在规范中要求并使用截断作为数据库清理策略)。

一切都像魅力一样运作,直到我们决定实施的最后一个演员。它与其他没有什么不同,但是现在,在运行测试套件时,ActiveRecord::ConnectionTimeoutError它被提升了。

我在互联网上搜索了解决方案,但没有任何结果。大多数答案(如this one)建议使用ActiverRecord::Base.connection_pool.with_connection将块传递给它的方法。我们已经在这样做了。

我唯一能想到的是我们正在处理演员的错误,拯救异常,就像这样:

但是从源头来看,这不是问题,因为with_connection可以确保发布它。

我将打开一个关于吸盘拳的问题,如果我有一些消息,我会更新这个问题。

有问题的版本可以等待,但这也让我想知道我们是否在生产中遇到同样的问题......

干杯,阿尔达娜。

编辑 gem 的作者告诉我,代码显然没有问题,并建议增加池大小。我将使用这种方法,如果错误仍然存​​在,我们将更改代码的某些部分以不使用吸盘冲头。

0 投票
1 回答
621 浏览

ruby-on-rails - Rails 和 Sucker_punch:在执行作业前 x 秒去抖动以控制执行率

在我的 Rails 3.2 项目中,我使用SuckerPunch在创建/更新模型时运行昂贵的后台任务。

用户可以在此模型上进行不同类型的交互。大多数时候,这些更新的间隔非常好,但是对于一些其他操作,如重新排序、批量更新等,这些 POST 请求可能会非常频繁地出现,这就是它压倒服务器的时候。

我的问题是,当第一次更新发生时启动后台作业的最优雅/最智能的策略是什么,但是等待10 秒以确保没有更多更新进入该模型(表,而不是一行),然后执行作业。如此有效地节流而无需排队。

我的sucker_punch工人看起来像这样:

它从Marker“映射”模型中调用,有时从控制器(对于update_all案例)中调用,如下所示:

因此,运行后台作业的一个非常标准的设置。如何让工作等待或不安排,直到x seconds我的模型(或表)上没有更新

如果有帮助,地图 has_many 标记会通过逻辑触发这项工作,以至于当地图更新的任何标记关联也可以。

0 投票
1 回答
1052 浏览

ruby-on-rails - Rails Sucker Punch - 如何在不访问主页的情况下开始工作?

我试图弄清楚如何让 SuckerPunch 中的后台作业开始工作,而无需加载索引页面。

现在,我要做的是:

$ rails server #在 localhost:3000 启动服务器

然后我转到我的浏览器 URL 并输入 localhost:3000

这会触发我的 SuckerPunch 作业,它们开始运行。

我的 application_controller.rb

这就是我调用作业的地方。我在想也许我可以把它们放在另一个地方,这样我就可以实现我想要的。

在服务器启动时启动作业 - 而不是 http 请求。

0 投票
2 回答
862 浏览

ruby-on-rails - 未定义的方法“异步”(suckerpunch gem)

我正在使用sucker_punch gem在后台在我的rails应用程序中发送电子邮件。它曾经工作正常,但后来我突然收到这个错误:

以下是完整错误的屏幕截图:

在此处输入图像描述

我现在正在使用 Sucker_punch 2.0.1 版。我试图降级它并改用 1.6.0 版的吸盘,但错误仍然存​​在。

有什么帮助吗?谢谢!

0 投票
2 回答
1348 浏览

ruby-on-rails - 将 Sucker Punch 与活动作业一起使用,有没有办法取消排队的作业?

所以我有 MyJob.perform_in(60, @user),它将在 60 秒内完成我的工作。

如果再次运行这行代码并在队列中替换它,我想取消此作业。

我没有运气研究。

0 投票
0 回答
555 浏览

ruby-on-rails - ActiveJob 队列适配器被忽略?

用户控制器.rb

我的工作.rb

配置/初始化程序/sucker_punch.rb

当我MyJob.perform_later在 Rails 控制台中运行时,一切正常,记录器显示此消息Enqueued MyJob (Job ID: 6c857af8-a8ed-4bd0-918b-4296c4315727) to SuckerPunch(default)

但是,当我向我的user_controller发送 http 请求时,我在 3 秒之前没有收到任何响应(这让我认为作业不是异步执行的),并且记录器显示这个Enqueued MyJob (Job ID: e3d698eb-00d8-4849-9496-f01c53fc7217) to Inline(default)

它似乎在控制器中使用内联(默认?)适配器,它不是异步的。

ps:我puma用作http服务器,并且使用不带ActiveJob的sucker_punch可以正常工作

0 投票
2 回答
1513 浏览

ruby-on-rails - 有没有办法从 Rails 控制台列出队列中的 Sucker Punch 作业?

在 DelayedJob 中,我们可以Delayed::Job.all在控制台上使用来列出队列中的所有作业。有没有办法使用 SuckerPunch gem 做同样的事情?

0 投票
0 回答
202 浏览

ruby-on-rails - Rails Mailchimp 后台作业未实现错误

因此,我想将在我的 rails 网站上注册的用户添加到邮件列表中。我已经安装了长臂猿 gem,并且成功地在一个独立的 ruby​​ 文件中测试了我的 ruby​​ 方法。但是,我在将其集成到我的应用程序中时遇到了问题。

我在 rails 日志中收到的错误是 ERROR -- : NotImplementedError (NotImplementedError)

这是我的方法,我试图从这篇博客文章中遵循:http: //aspiringwebdev.com/mailchimp-and-active-job-on-rails-4-adding-users-to-your-mailing-list-in-的背景/

我安装了一个后台工作人员(sucker_punch)。

我创建了一个名为 AddUserToRegistrationListJob 的作业

然后在我的 user.rb 文件中,我有

在我运行良好的 ruby​​ 文件中,我将该方法的参数指定为

并在我像这样运行 ruby​​ 文件时传入对象:

不清楚如何调整方法或参数以适应导轨。有什么建议么?