Ruby on rails 从rails中的控制器内部启动进程

Ruby on rails 从rails中的控制器内部启动进程,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想从控制器内部启动一个进程。 我已经试过了 pid = fork do code end Process.detach(pid) 但什么都没有发生。当我尝试在fork块中使用eval(代码)时,代码会运行,但实际运行它的是rails服务器/puma。这意味着,当我终止进程时,我也会关闭整个服务器 我之前有一些代码,我丢失了,但仍然有效,我几乎可以肯定它使用了exec或eval或类似的东西,创建了一个进程(因此返回了一个pid以便以后能够终止它),我记得我用ps检查过它是由rails的某个

我想从控制器内部启动一个进程。 我已经试过了

pid = fork do
 code
end

Process.detach(pid)
但什么都没有发生。当我尝试在fork块中使用eval(代码)时,代码会运行,但实际运行它的是rails服务器/puma。这意味着,当我终止进程时,我也会关闭整个服务器

我之前有一些代码,我丢失了,但仍然有效,我几乎可以肯定它使用了exec或eval或类似的东西,创建了一个进程(因此返回了一个pid以便以后能够终止它),我记得我用ps检查过它是由rails的某个部分运行的,而不是实际的整个服务器

为什么叉子的挡块不足以让它工作?怎么做?
而且,出于非测试目的和实际实现,如何使其完全独立于rails服务器运行

您可以使用
exec
从Rails控制器内部执行shell命令

我希望你也在寻找同样的。您在系统上启动的进程将完全独立于Rails服务器,如果在您点击命令时它正在运行,那么它将在
ps
命令下可见


文档:

Rails为运行后台任务提供了内置框架:。除非你有充分的理由不这样做,否则请使用它。对不起,我不想要作业。你所描述的“分岔流程”,以及运行一些异步任务,是一个后台作业。你为什么说这不合适?工作不合适是因为它们不适合我的应用程序需要的那种任务……你的应用程序需要什么样的任务?“工作”是一个非常通用的概念;它可以是任何异步任务。这个问题在我看来几乎可以肯定是一个问题:你坚持要在选择的解决方案上获得帮助,而不是解释要解决的原始问题。我只是尝试在“fork do”中执行exec eval(“我的代码”),它由服务器运行。我做错了什么?
exec
将在系统(您的操作系统)上执行代码。而
fork
将从主Rails进程创建一个子线程。有关
fork
的更多信息,请点击此处: