Ruby on Rails – ActiveResource
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