用于远程Ruby on Rails环境的R客户端

时间:2011-09-14 16:46:26

标签: ruby-on-rails ruby-on-rails-3 r

我会尽可能清楚地解释我的问题。

我的公司有一个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社区会有一些建议吗?

3 个答案:

答案 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并返回所需的数据。