Ruby on Rails – ActiveResource

On 9 de março de 2015 by Bernardo Reis

Introdução ao ActiveResource

Neste post estudaremos ActiveResource, uma gem que disponibiliza uma interface de comunicação entre diferentes aplicações Rails. Isso é útil, por exemplo, para quando as informações de usuário são manipuladas a partir de uma aplicação e outros dados são manipulados por outra.

O ActiveResource mapeia recursos RESTful como modelos em uma aplicação Rails, o que significa a obtenção de tais recursos como objetos em Ruby. Ele age praticamente como o ActiveRecord, mas lida com a formatação de recursos HTTP contruídos em JSON ou XML ao invés de manipular um banco de dados.

Implementação

Adicione o seguinte em seu Gemfile:

[code language=”ruby” collapse=”false”]
gem ‘activeresource’
[/code]

A primeira etapa é a criação de uma classe de Modelo que não possui uma migration e que herda de ActiveResource::Base e não de ActiveRecord::Base.

[code language=”ruby” collapse=”false”]
require ‘rubygems’
require ‘active_resource’

class Profile < ActiveResource::Base
self.site = "http://raiz/dos/objetos/da/outra/aplicação/"
end
[/code]

Para criar um objeto e enviar a requisição POST para o servidor do modelo, basta fazer o seguinte código:

[code language=”ruby” collapse=”false”]
bernardo = Profile.create(:first_name => "Bernardo")
[/code]

Para recuperar os dados do servidor através de uma requisição GET:

[code language=”ruby” collapse=”false”]
profiles = Profile.all
[/code]

Para a aplicação servidor, certifique-se que o ApplicationController utilize protect_from_forgery with: :null_session, caso contrário você não conseguirá alterar dados do banco de dados:

[code language=”ruby” collapse=”false”]
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :null_session
end
[/code]

Agora você é capaz de manipular modelos que estão presentes em uma outra aplicação de maneira muito semelhante ao que seria usado para modelos em sua própria.

Para mais informações, consulte a documentação oficial

Deixe um comentário

O seu endereço de e-mail não será publicado.