是否可以将多种语言与ruby一起使用。例如,我在Ruby on Rails中有我的应用程序代码。我想计算建议,我想使用python。基本上,python代码将获取数据并计算所有的东西,并可能从DB获取数据,计算和更新表。这是可能的,你们怎么看待它的adv / disadv
由于
答案 0 :(得分:4)
如果要将工作卸载到外部进程,您可能希望将其设置为某种Web服务(可能是ajax),以便您拥有某种一致的接口。
否则,您总是可以使用stdin / stdout / argv通过ruby在子shell中执行python脚本,但这很快就会变得难看。
答案 1 :(得分:1)
我会使用系统命令 就这样
system("python myscript.py")
答案 2 :(得分:1)
根据您的确切需求,您可以呼叫外部进程(使用popen,系统等),也可以设置另一个迷你Web服务器或类似的东西,让rails服务器通过它与之通信带有REST风格API的HTTP(或任何最适合您需求的API)。
在您的示例中,您有一个ruby前端网站,然后是一个数字运算的python后端服务,它为ruby站点构建推荐数据。一个相当不错的解决方案是让ruby站点在需要数据更新时向python服务发送HTTP请求(使用信息的有效负载来识别它需要对什么或某些内容做什么)然后python后端服务可以收缩并更新表格,大概你的红宝石前端将自动获取下一个请求和显示期间的更改。
答案 3 :(得分:0)
一个简单,快速的'n'脏解决方案,如果你有python脚本并且你想从内部执行它们,是这样的:
%x[shell commands or python path/of/pythonscript.py #{ruby variables to pass on the script}]
或
``shell命令或python path / of / pythonscript.py#{ruby变量传递给脚本} \
(在开头和结尾带有`符号)。
将上述内容放入控制器并执行。
出于某种原因,在rails上的ruby内部,系统和exec命令对我来说不起作用(exec崩溃了我的应用程序,系统没有做任何事情)。