如何从外部访问Ruby on Rails应用程序中的数据?

时间:2009-12-21 04:00:24

标签: ruby-on-rails ruby json api encapsulation

我正在尝试使用单独的Ruby脚本处理Rails应用程序中的数据。

我读过this forum post,其中有些人建议处理数据的最佳方法是将数据库封装在一个应用程序中,然后让此应用程序提供用于处理该数据的API。因为将数据库集成到几个不同的应用程序中显然很糟糕。

好吧,现在我想从另一个脚本中使用我的Rails应用程序中的一些数据,但是在同一个系统上。我怎样才能做到这一点?

我可能希望以后远程使用我的Rails应用程序中的数据,也可以使用脚本。我假设这可能需要JSON或SOAP,但在我研究它之前我想知道。

3 个答案:

答案 0 :(得分:6)

你看看ActiveResource了吗?它专门用于通过HTTP将数据从Rails模型暴露给另一个Rails应用程序。

答案 1 :(得分:1)

由于Ruby on Rails遵循REST,因此默认情况下,您的应用程序是自己的API。例如,假设您有以下控制器:

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
    respond_to do |format|
      format.html
      format.xml  { render :xml => @user}
      format.js
    end
  end

  def index
    @users = User.all
    respond_to do |format|
      format.html
      format.xml  { render :xml => @users}
      format.js
    end
  end
end

现在,当通过网络浏览器点击该控制器时,它会像您期望的那样呈现您的视图。例如:

GET /users/1   =>  /app/views/users/show.html.erb
GET /users     =>  /app/views/users/index.html.erb

但是,如果您将请求更改为:

GET /users/1.xml
GET /users.xml

您将返回XML数据而不是HTML视图。您现在可以使用某种REST Client任何其他应用程序访问此数据,或者只需从任何命令行调用cURL。

您可以将任何扩展名附加到您网址的末尾,它会找到相应的respond_to部分。

答案 2 :(得分:0)

访问数据也很简单,只需使用HTTParty之类的内容向您的应用程序发出请求即可。 Look at the examples,他们非常好。