我会尽可能清楚地解释我的问题。
我的公司有一个Ruby on Rails 3环境。负责RoR环境的人花了很多时间在这上面,并且在构建复杂的信息系统方面做得很好。
我是R用户,我想利用他们开发的Rails层。
本地R实例是否有一种简单的方法可以连接到远程Rails服务器并使用其功能集来检索数据?开发团队完全控制Rails环境/服务器,我可以轻松地与它们进行交互,但他们对R不太了解。
我一直在关注RSRuby,Rserve(Rserve-Ruby-client),Resque,RinRuby ......但是由于我的理解有限,似乎Ruby似乎是R客户端。
对于使用Ruby的R,除了本地调用Ruby控制台(不是Rails)之外
x=system('ruby calc.rb', intern=TRUE)
。我找不到多少。
stackoverflow社区会有一些建议吗?
答案 0 :(得分:4)
我假设R可以调用基于REST的服务。您的rails团队可以使用REST界面公开RAILS服务器功能。在Rails 3中,很容易将HTML服务转换为REST(XML / JSON)服务。
基于用户评论的附加说明
我们假设您有一个Users
控制器,其index
操作可以返回HTML文档中的用户列表。
class UsersController
def index
@users = User.all
respond_with(@users)
end
end
启用index
服务以XML / JSON格式返回用户列表:
class UsersController
respond_to :html, :xml, :json
def index
@users = User.all
respond_with(@users)
end
end
现在
http://host/users.xml
返回XML文档
http://host/users.json
返回JSON结构
XML / JSON有线格式由rails修复。您无需为此创建模板。您应该与rails团队合作以获取XML / JSON文档结构。典型的XML文档可能如下所示:
<强>的http://主机/命令/ 1 强>
<?xml version="1.0" encoding="UTF-8"?>
<order>
<client-id type="integer">1</client-id>
<created-at type="datetime">2011-04-03</created-at>
<id type="integer">1</id>
<updated-at type="datetime">2011-04-03</updated-at>
...
</order>
答案 1 :(得分:3)
我对R也一无所知,但似乎你可能有能力加载远程URL并处理XML,这意味着你可以使用activeresource从他们的系统中获取数据,以及这真的是全部。 rails系统与应用程序边界(Web服务器)上的任何其他基于Web的系统没有任何不同。如果您的Rails开发人员愿意添加这些输出(大多数可以通过一个宝石或其他宝石免费获得),您也可以从JSON中的Rails或任何其他对R友好的格式获取数据。
答案 2 :(得分:0)
其他博客的建议,例如: http://www.r-bloggers.com/calling-ruby-perl-or-python-from-r/似乎要继续使用系统调用。你希望的基本上是一个翻译,这是一个很大的工作(通常不能很好地工作:-()。我建议你收集你将定期使用的基本系统调用并将它们放入R功能。这样,你只需要输入
> My.new.data <- tellRuby(data_to_get)
和你的“tellRuby”函数可以调用dbase并返回所需的数据。