- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我猴子修补了我的用户类(由设计支持)以像这样使用 ActiveJob:
class User < ActiveRecord::Base
# Omitted
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
end
我尝试通过以下测试对此进行测试:
class UserTest < ActiveSupport::TestCase
include ActiveJob::TestHelper
def setup
@user = User.new(email: 'example@gmail.com', password: 'password',
password_confirmation: 'password')
end
test 'send_devise_notification queues into activejob' do
@user.save
assert_equal enqueued_jobs.size, 1 # This test passes
assert_equal Sidekiq::Extensions::DelayedMailer.jobs.size, 1 # This test fails
end
log/test.log 看起来像这样:
------------------------------------------------------------------
UserTest: test_0011_send_devise_notification queues into activejob
------------------------------------------------------------------
[1m[35m (0.1ms)[0m SAVEPOINT active_record_1
[1m[36mUser Exists (0.4ms)[0m [1mSELECT 1 AS one FROM "users" WHERE "users"."email" = 'example@gmail.com' LIMIT 1[0m
[1m[35mUser Load (0.3ms)[0m SELECT "users".* FROM "users" WHERE "users"."confirmation_token" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["confirmation_token", "62d1fac8e1319c29bfbe630aece15975963994b09746edbad65772e4598aa4d2"]]
[1m[36mSQL (0.4ms)[0m [1mINSERT INTO "users" ("email", "encrypted_password", "created_at", "updated_at", "confirmation_token", "confirmation_sent_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"[0m [["email", "example@gmail.com"], ["encrypted_password", "$2a$04$b6/WjVWCthq.bKG1KN8JPeb3w8jz8oVWTU53BpTn90wIlTQ5cC2KO"], ["created_at", "2015-01-30 06:19:03.531310"], ["updated_at", "2015-01-30 06:19:03.531310"], ["confirmation_token", "62d1fac8e1319c29bfbe630aece15975963994b09746edbad65772e4598aa4d2"], ["confirmation_sent_at", "2015-01-30 06:19:03.730092"]]
[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 9730d5a8-5dd4-4334-8290-e4e8e554715e) to Test(mailers) with arguments: "Devise::Mailer", "confirmation_instructions", "deliver_now", gid://swyp/User/232633312, "s7QVW_T2Aw8-ik6o1g2f", {}
[1m[35m (0.2ms)[0m RELEASE SAVEPOINT active_record_1
[1m[36m (0.2ms)[0m [1mROLLBACK[0m
[1m[35m (0.1ms)[0m BEGIN
调试器中的 enqueued_jobs 看起来像这样:
[{:job=>ActionMailer::DeliveryJob,
:args=>["Devise::Mailer", "confirmation_instructions", "deliver_now", #<User id: 232633312, email: "example@gmail.com", encrypted_password: "$2a$04$E05.gR8oXSHQyk8hUOTBZ.PvswvHy2YYtTNXaha.wj2...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, confirmation_token: "cba7134de82b6fde115fd3ca8e40975befeac299a1e619cdcb...", confirmed_at: nil, confirmation_sent_at: "2015-01-30 17:08:51", unconfirmed_email: nil, created_at: "2015-01-30 17:08:51", updated_at: "2015-01-30 17:08:51", first_name: nil, last_name: nil>, "QBLzzPLKVLy3znSZESBc", {}], :queue=>"mailers"}]
bin/rails c --环境测试
irb(main):004:0> Rails.application.config.active_job.queue_adapter
=> :sidekiq
我的 Procfile 看起来像这样:
web: bin/rails s
redis: redis-server
worker: bundle exec sidekiq -q default -q mailers
有人有什么想法吗?
最佳答案
ActiveJob::TestHelper
实际上并没有将作业传递给适配器。如果删除它,它将成为 ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper
的一个实例。
关于ruby-on-rails - 测试 Sidekiq/ActiveJob - 工作在 ActiveJob 但不是 Sidekiq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28230396/
我想使用 rails 控制台重新启动所有失败的作业。有没有办法做到这一点?我可以使用以下方法获取工作列表: require 'sidekiq/api' Sidekiq::Queue.new("mail
我想使用 Datadog 来监控一些后台作业的队列长度。 基本上我需要知道 Sidekiq 中代表队列的键的名称 ,以便我可以按照此处所述对其进行监控: https://docs.datadoghq.
我将 Sidekiq 与 Rails 一起使用,返回的并发值似乎是错误的。 Sidekiq.options[:concurrency] 返回 10 而不是 3,这是我的 config/sidekiq.
从Rails API中,我发现ActiveJob可以retry_job间隔: my_job_instance.enqueue my_job_instance.enqueue wait: 5.minut
我正在一个作业中进行一些处理,最终执行一个外部 shell 命令。该命令正在执行需要数小时才能完成的脚本。 问题是在我使用 spawn 启动脚本后和 detach如果我使用 kill -15 信号关闭
我有一个使用 Capistrano 部署的 Rails 3 应用程序。我最近添加了 Sidekiq。它在我的开发中运行良好。我同时主持 staging和 preview在同一台服务器上,它的预览无法正
我有一个简单的工作线程正在访问其自己的队列的大小: 需要“sidekiq/api” class TestWorker include Sidekiq::Worker def perform(*
我在我的 Rails 应用程序中使用 sidekiq。默认情况下,任何人都可以通过在 url 后附加“/sidekiq”来访问 Sidekiq。我只想用密码保护/验证 sidekiq 部分。我该怎么做
我正在在线阅读一些教程,这些教程告诉我们将 ActiveJob 与 Sidekiq 结合使用。但我不知道我们为什么要这样做。我看到 Sidekiq 具有 ActiveJob 的所有功能。 此外,在 S
我猴子修补了我的用户类(由设计支持)以像这样使用 ActiveJob: class User ActionMailer::DeliveryJob, :args=>["Devise::Mailer",
我有 sidekiq 作业对多种类型的资源进行处理。但是,对于特定类型的资源,例如:资源 X,我需要确保在任何给定时间只有一个 sidekiq 作业可以处理该特定资源。 例如,如果我有 3 个 sid
在过去的一年里,我对我的一项工作的流程进行了大量更改。诸如从相应模型上的 after_commit 而不是 after_create 触发它,以及清理逻辑和覆盖极端情况 我在我的 Heroku Rub
我看到this在 Sidekiq 官方 wiki 中,ActiveJob 会慢得多。 但它是在 2018 年 3 月根据此 issue 基于 Rails 4.2 和 Sidekiq 5.1.1 提到的
我使用 Rails 4 默认测试框架并编写了一些测试,这些测试也希望 Sidekiq 在“后台”做一些工作。但是当我运行 rake test 时,我的测试结果看起来像这样: .............
我们几周前在我们的系统中添加了监控用户事件,如下所示: class ApplicationController < ActionController::Base before_filter :lo
我正在运行 7 个 sidekiq 进程(货币设置为 40)和一个乘客网络服务器,连接到 postgres 数据库。 Rails 池设置设置为 100,postgres max_connectio
我第一次在 Rails 应用程序中使用 Sidekiq。这也是我第一次使用Redis。 我见过几个示例(Here、here、here),其中 initializers/sidekiq.rb 包含以下几
我刚开始使用 sidekiq 和 redis,我试图让 sidekiq 在 Heroku 上运行,但每次我部署 Rails 4 应用程序时它似乎都会崩溃。我在 Papertrail 中收到此错误: M
我有一个要求,我应该能够每秒运行 100 个 sidekiq 作业。 我将服务器容量增加到 8 个 CPU 并创建了 4 个 sidekiq 进程,但它仍然每分钟服务 50 个作业。 我不确定我在哪里
我在 Sidekiq 中有两种队列:“default/low”——满足网络请求和“background_queue”——运行后台进程,比如获取推文。我想在不同的 dyno 上运行“background
我是一名优秀的程序员,十分优秀!