我正在尝试将一些 node.js 代码与我的 Rails 应用程序集成。基本上它是一个 js 文件,其中包含一些进程将在后台运行的代码。
我遵循了以下步骤:
- 在一些 test_node.js 文件中的 Rails 应用程序的根目录中添加了代码。
- 现在我要做的是使用 ruby 的 exec 函数向我的系统传递一个值,例如 exec "node test_node.js"。
- 这工作得很好,但它阻止了我的服务器处理任何请求。
- 为了将它传递到后台,我尝试使用 nohup 例如:exec "nohup node test_node.js"。
- 当我运行这段代码时,我的服务器崩溃了。
我是 Rails 开发人员,从未开发过 Node 应用程序,所以不知道我是否采用了正确的方法。
最佳答案
exec
用一个新进程替换当前运行的进程。因此,要在后台运行某些东西,您应该在子进程中fork
和exec
。
fork { exec('node', 'test_node.js', ...) }
不需要nohup
。
另见 Ruby, Difference between exec, system and %x() or Backticks
关于ruby-on-rails - 从 Rails 应用程序运行 node.js 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29984305/