ruby-on-rails - application.rb 中 Kernel.spawn 和 rails 的奇怪行为
问题描述
如果我添加以下行application.rb
puts 'in application.rb'
pid = spawn('rake jobs:work')
Process.detach pid
我看到以下输出
in application.rb
=> Booting Puma
...
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
in application.rb
[Worker(host:local pid:9966)] Starting job worker
in application.rb
[Worker(host:local pid:9998)] Starting job worker
in application.rb
[Worker(host:local pid:10032)] Starting job worker
如果我删除spawn
呼叫in application.rb
,则按预期仅在开始时显示一次。
此输出大约每秒写入一次。所有这些进程都是健康的,并且会在我杀死 puma 时停止。
我无法弄清楚发生了什么。为什么这段代码每秒都会执行一次?
解决方案
... rake 也需要文件,这就是原因。
要使其按预期工作:
if $0 =~ /rails/
pid = spawn('rake jobs:work')
Process.detach pid
end
推荐阅读
- python - 我想在我拥有的数据框中取除一列之外的所有列的平均值
- windows-runtime - 相互依赖的 Windows 运行时依赖项属性
- asp.net-core - 如何从 ML.NET 中的 ML 模型的 ITransformer 获取训练 PipleLine
- visual-studio - 在 Qt 5.14.2 中配置 MSVC 2019
- wordpress - 如何使用 Wordpress 创建母版页
- swift - 使用淡入淡出动画刷新 UIButton 文本
- python-3.x - 在 docker-compose 中使用 selenium/standalone-chrome 与 Python 的 selenium 连接
- python-3.x - 文件更新/更改 Tkinter 时图像未显示
- angular - 选项选择时的角度显示div,隐藏其他
- c++ - Windows 可以在静态库 C++ 中调用 WinMain 函数吗