如何从Rails应用程序运行Python脚本?

时间:2016-08-25 05:16:51

标签: python ruby-on-rails ruby

我现在正在开发一个rails应用程序,只要在我们的应用程序主页上单击一个按钮就需要运行一个python脚本。我试图想办法让rails运行这个脚本,到目前为止我的两次尝试都失败了。

我的第一次尝试是使用exec(..)命令来运行“python script.py”,但是当我这样做时,似乎运行该文件但终止rails服务器,所以我需要手动重启它每一次。

我的第二次尝试是安装宝石“RubyPython”并从那里尝试,但是一旦我运行它,我就不知道该怎么办..我找不到任何人用它来运行或加载的例子一个python脚本。

对此有任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

exec将新流程替换为当前流程。您希望将其作为子进程运行。有关概述,请参阅When to use each method of launching a subprocess in Ruby;我建议在一个简单的过程中使用反向标记,或者在需要更多控制时使用popen / popen3

或者,您可以使用Ruby-Python bridge gem rubypython从Ruby本身执行Python(特别是如果您将重复执行相同的Python函数)。为此,您需要将脚本设置为正确的Python模块,在Rails应用程序启动时启动桥接,然后使用RubyPython.import将您的模块引用到Ruby代码中。 gem的GitHub页面上的示例非常简单,应该足以满足您的需要。

答案 1 :(得分:2)

以下是执行shell脚本的方法

`python pythonscript.py`

system( "python pythonscript.py" )

exec(" python pythonscript.py")

exec通过运行给定的外部命令来替换当前进程 返回none,当前进程被替换并且永远不会继续。