2015-05-01 3 views
3

Я пытаюсь интегрировать некоторый код node.js с моим приложением Rails. В основном это файл js с некоторым кодом, который будет продолжать работать в фоновом режиме.Запуск кода node.js из приложения Rails

Я следовал следующим шаги:

  • Добавлен код в корневом каталоге приложения рельсов в некотором test_node.js файл.
  • Теперь я передаю значение моей системе, используя функцию exec ruby, например exec "node test_node.js".
  • Это работает отлично, но он прерывает мой сервер от обработки любых запросов.
  • Чтобы передать это фон, я попытался использовать nohup, например: exec "nohup node test_node.js".
  • Когда я запускаю этот код, сбой моего сервера.

Я разработчик Rails и никогда не работал над приложением узла, поэтому понятия не имею, правильно ли я принимаю его правильно.

+2

Какой сервер? Вы использовали 'fork and exec'? Можете ли вы переписать test_node.js в ruby? – radubogdan

+0

Я использую Unicorn для своего приложения, его невозможно переписать test_node.js в Ruby. Я пробовал использовать 'fork и exec', он работал, но когда я проверял журналы, я чувствую, что он остановил сервер и снова разветвил его. Будут ли они работать и на производстве? –

ответ

3

exec заменяет текущий текущий процесс новым. Таким образом, чтобы запустить что-то в фоновом режиме, вы должны fork и exec у ребенка.

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

nohup не требуется.

См. Также Ruby, Difference between exec, system and %x() or Backticks

+0

Удивительно, есть ли способ проверить журналы этого процесса? –

+0

Вы можете перенаправить stdout/stderr в файл прямо перед exec. – user49740

Смежные вопросы