【问题标题】:Running node.js code from Rails application从 Rails 应用程序运行 node.js 代码
【发布时间】:2015-07-11 03:12:43
【问题描述】:

我正在尝试将一些 node.js 代码与我的 Rails 应用程序集成。基本上它是一个 js 文件,其中包含一些进程将在后台继续运行的代码。

我已按照以下步骤操作:

  • 在某个 test_node.js 文件的 rails 应用程序根目录中添加了代码。
  • 现在我要做的是使用 ruby​​ 的 exec 函数将值传递给我的系统,例如 exec "node test_node.js"。
  • 这工作得很好,但它使我的服务器无法处理任何请求。
  • 为了将其传递到后台,我尝试使用 nohup,例如:exec "nohup node test_node.js"。
  • 当我运行此代码时,我的服务器崩溃了。

我是 Rails 开发人员,从未开发过节点应用程序,所以不知道我是否采取了正确的方式。

【问题讨论】:

  • 什么服务器?你用过fork and exec吗?可以用 ruby​​ 重写 test_node.js 吗?
  • 我在我的应用程序中使用 Unicorn,它无法在 Ruby 中重写 test_node.js。我尝试使用 fork and exec 它工作但当我检查日志时,我觉得它停止了服务器并再次分叉它。它也适用于生产环境吗?

标签: ruby-on-rails node.js


【解决方案1】:

exec 将当前正在运行的进程替换为一个新进程。因此,要在后台运行某些东西,您应该在孩子中使用 forkexec

fork { exec('node', 'test_node.js', ...) }

nohup 不需要。

另见Ruby, Difference between exec, system and %x() or Backticks

【讨论】:

  • 太棒了,有什么方法可以检查这些进程的日志吗?
  • 您可以将 stdout/stderr 重定向到 exec 之前的文件。
猜你喜欢
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 2010-10-20
  • 2019-02-15
  • 1970-01-01
相关资源
最近更新 更多