Как получить доступ к данным из приложения Ruby on Rails извне? - PullRequest
2 голосов
/ 21 декабря 2009

Я пытаюсь работать с данными в моем приложении Rails из отдельного сценария Ruby.

Я прочитал это сообщение на форуме , в котором некоторые люди считают, что лучший способ работать с вашими данными - это инкапсулировать базу данных в одном приложении, а затем предоставить этому приложению API для работы с этими данными , Потому что, по-видимому, плохо интегрировать вашу базу данных в несколько разных приложений.

Хорошо, теперь я хочу работать с некоторыми данными из моего приложения Rails из другого скрипта, но в той же системе. Как мне этого добиться?

Возможно, в будущем я захочу удаленно работать с данными из моего приложения Rails, но также и из сценария. Я предполагаю, что для этого может потребоваться JSON или SOAP, но я хотел бы знать, прежде чем приступить к его исследованию.

Ответы [ 3 ]

6 голосов
/ 21 декабря 2009

Вы взглянули на ActiveResource? Он специально разработан для предоставления данных из модели Rails другому приложению Rails через HTTP.

1 голос
/ 22 декабря 2009

Поскольку 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 из любой командной строки.

Вы можете добавить любое расширение в конец вашего URL, и он найдет соответствующий раздел response_to.

0 голосов
/ 21 декабря 2009

Доступ к данным также прост, просто сделайте запрос к вашему приложению, используя что-то вроде HTTParty . Посмотрите на примеры , они довольно хороши.

...