我现在正在开发一个rails应用程序,只要在我们的应用程序主页上单击一个按钮就需要运行一个python脚本。我试图想办法让rails运行这个脚本,到目前为止我的两次尝试都失败了。
我的第一次尝试是使用exec(..)命令来运行“python script.py”,但是当我这样做时,似乎运行该文件但终止rails服务器,所以我需要手动重启它每一次。
我的第二次尝试是安装宝石“RubyPython”并从那里尝试,但是一旦我运行它,我就不知道该怎么办..我找不到任何人用它来运行或加载的例子一个python脚本。
对此有任何帮助将不胜感激。
答案 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,当前进程被替换并且永远不会继续。