2

別の Ruby スクリプト内から Rails アプリケーションのデータを操作しようとしています。

このフォーラムの投稿を読みました。データを操作する最善の方法は、データベースを 1 つのアプリケーション内にカプセル化し、そのデータを操作するための 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

HTML ビューではなく、XML データが返されます。ある種のREST Clientを使用するか、任意のコマンド ラインから cURL を呼び出すだけで、他のアプリケーションからこのデータにアクセスできるようになりました。

URL の末尾に任意の拡張子を追加すると、適切な Respond_to セクションが見つかります。

于 2009-12-22T04:16:11.797 に答える
0

データへのアクセスも簡単で、HTTPartyなどを使用してアプリケーションにリクエストを送信するだけです。を見てください。かなり良いです。

于 2009-12-21T04:05:57.367 に答える