2

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

我阅读了这个论坛帖子,其中有人建议处理数据的最佳方式是将数据库封装在一个应用程序中,然后让该应用程序提供一个 API 来处理该数据。因为将数据库集成到几个不同的应用程序中显然很糟糕。

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

将来我可能希望远程处理来自我的 Rails 应用程序的数据,但也来自脚本。我假设这可能需要 JSON 或 SOAP,但在我去研究它之前我想知道。

4

3 回答 3

6

你看过 ActiveResource 吗?它专门设计用于通过 HTTP 将 Rails 模型中的数据公开给另一个 Rails 应用程序。

于 2009-12-21T04:53:10.960 回答
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

现在,当通过 Web 浏览器点击该控制器时,它将按照您的预期呈现您的视图。例如:

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 从任何其他应用程序访问此数据。

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

于 2009-12-22T04:16:11.797 回答
0

访问数据也很简单,只需使用HTTParty 之类的东西向您的应用程序发出请求。看例子,很不错。

于 2009-12-21T04:05:57.367 回答