You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行时检测Rails应用是否运行在Sidekiq Worker上下文

Rails 初始化器中检测Sidekiq运行上下文的方案

不需要额外传入环境变量即可实现上下文判断,常用的两种实现方案如下:

  • 基础判断方案(无侵入,适合绝大多数场景)
    Sidekiq 服务端进程启动时会自动加载Sidekiq::Server常量,普通 Rails Web 进程、Rake 任务进程不会加载该常量,直接判断常量是否存在即可:
# 写在 Rails 初始化器文件中即可
if defined?(Sidekiq::Server)
  # 仅在Sidekiq场景下执行的代码
end
  • 增强兼容方案(避免特殊场景误判)
    如果你的项目存在其他场景可能误加载Sidekiq::Server的情况,可以结合Ruby当前运行脚本名做双重校验:
is_sidekiq_context = defined?(Sidekiq::Server) || $0.include?('sidekiq')
if is_sidekiq_context
  # 仅在Sidekiq场景下执行的代码
end

注意:不要直接用defined?(Sidekiq)做判断,只要Gemfile中引入了Sidekiq gem,所有Rails进程都会加载Sidekiq基础常量,该判断永远为真,无法区分运行上下文。

内容的提问来源于stack exchange,提问作者John Bachir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:42:00