2010-07-09 64 views
2

是否有可能使用多种语言的旁边红宝石。例如,我在Ruby on Rails中有我的应用程序代码。我想计算的建议,我想用python的。所以基本上,Python代码将得到的数据,并计算所有的东西,可能是从数据库获取数据,计算并更新tables.Is可以和你们认为怎么样进阶其/ disadv使用其他语言与红宝石

感谢

+1

你为什么要Python和Ruby结合的原因吗?我理解需要结合两种互补语言(Ruby和C,Python和Java等)。 – 2010-07-09 19:59:02

+0

它只是不python,绝对是一种使用其他语言与红宝石的方式。我提到python作为例子:) – felix 2010-07-09 20:38:33

回答

4

如果您将工作卸载到外部进程,您可能希望将其设置为某种web服务(可能是ajax),以便您拥有某种一致的界面。

否则,你总是可以在子shell通过红宝石执行python脚本,使用标准输入/输出/ argv的,但是这会变得非常恶劣快。

+1

+1让丑陋的快速。如果你使用'open4'或其他类似的包装器来处理系统命令,你可能会获得更好的里程数,但是它的管理一定很棘手。 – nfm 2010-07-09 22:29:24

1

我会(使用POPEN,系统等),或使用系统命令 这样

system("python myscript.py") 
1

根据您的具体需求,您可以打电话到外部过程中,你可以设置另一个微型Web服务器或其他类似的东西,并让Rails服务器通过HTTP与REST风格的API(或任何最适合您需要的)进行通信。

在你的榜样,你有一个红宝石前端网站,然后,对于红宝石网站建立了推荐数据的数字运算蟒蛇后端服务。一个相当不错的解决方案是让ruby站点在需要数据更新时发送一个HTTP请求给python服务(使用信息有效载荷来确定它需要做些什么),然后python后端服务可以收缩并更新表格,大概你的红宝石前端会在下一次请求和显示期间自动选取变化。

0

一个简单,快捷的“否”如果你有Python脚本,你想从里面轨道执行它们,肮脏的解决方案是这样的:

%x[shell commands or python path/of/pythonscript.py #{ruby variables to pass on the script}]

``shell命令或python路径/ of/pythonscript.py#{ruby变量传递脚本} \(在开头和结尾都有`符号)。

把上面的控制器内,它将执行。

出于某种原因,在轨道内的红宝石,系统和exec命令并没有为我工作(EXEC坠毁我的应用程序和系统没有做任何事情)。