在Ruby中使用其他语言
可以在Ruby旁边使用多种语言吗?比如说,我的应用程序代码是用Ruby on Rails写的。我想用Python来计算推荐结果。所以,基本上,Python代码会获取数据,进行计算,可能还会从数据库中获取数据,计算完后更新表格。这种做法可行吗?你们觉得这样做有什么优缺点?
谢谢
4 个回答
1
我会使用系统命令,像这样:
system("python myscript.py")
2
根据你的具体需求,你可以选择调用外部程序(比如使用popen、system等),或者可以设置一个小型的网页服务器,类似的东西,让Rails服务器通过HTTP与它进行通信,使用REST风格的API(或者其他适合你需求的方式)。
在你的例子中,你有一个用Ruby做的前端网站,还有一个用Python做的后台服务,负责处理数据并生成推荐信息供Ruby网站使用。一个比较好的解决方案是,当Ruby网站需要更新数据时,发送一个HTTP请求给Python服务(请求中包含一些信息,用来说明需要对什么进行什么操作),然后Python后台服务就可以进行数据处理,更新数据库。这样,Ruby前端在下一个请求时就能自动获取到这些更新,并显示出来。
4
如果你把工作交给外部程序处理,可能想把它做成一个网络服务(比如用ajax),这样你就能有一个统一的接口来使用。
另外,你也可以通过ruby在一个子进程中执行python脚本,利用标准输入、输出和参数传递,但这样做可能会变得很麻烦。