2016-08-25 2 views
1

Теперь я работаю над приложением rails, которому нужно запустить один скрипт python всякий раз, когда на главную страницу наших приложений нажата кнопка. Я пытаюсь понять, как использовать этот скрипт для рельсов, и обе мои попытки до сих пор потерпели неудачу.Как запустить скрипт Python из Rails-приложения?

Моя первая попытка состояла в том, чтобы использовать команду exec (..) для запуска «python script.py», но когда я это делаю, кажется, что запускает файл, но завершает работу с сервером rails, поэтому мне нужно будет вручную перезагружайте его каждый раз.

Моя вторая попытка состояла в том, чтобы установить драгоценный камень «RubyPython» и попытаться оттуда, но я в недоумении, что делать, как только я его запустил. Я не могу найти ни одного примера людей, использующих его для запуска или загрузите скрипт python.

Любая помощь для этого будет оценена по достоинству.

ответ

1

Вот способы, чтобы выполнить скрипт

`python pythonscript.py` 

или

system("python pythonscript.py") 

или

exec(" python pythonscript.py") 

Exec заменяет текущий процесс, запустив данную внешнюю команду.
Возвращает нет, текущий процесс заменяется и никогда не продолжается.

2

exec заменяет текущий процесс новым. Вы хотите запустить его как подпроцесс. См. When to use each method of launching a subprocess in Ruby для обзора; Я предлагаю использовать либо обратные шаги для простого процесса, либо popen/popen3, когда требуется больше контроля.

В качестве альтернативы вы можете использовать жемчужину моста Ruby-Python rubypython, чтобы выполнить Python из самого Ruby (особенно если вы будете выполнять ту же функцию Python повторно). Для этого вам нужно будет сделать ваш скрипт подходящим модулем Python, запустить мост, когда начнется приложение Rails, а затем использовать RubyPython.import, чтобы получить ссылку на ваш модуль в свой код Ruby. Примеры на странице GitHub на Gem довольно просты и должны быть достаточными для вашей цели.

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