Publicado por Rafael Rosa em 14 de January de 2010

ActiveModel do Rails 3.0 – Coloque um pouco da mágica do ActiveRecord nas suas classes Ruby

activemodel.gifUm dos maiores benefícios de se trazer o criador do Merb, Yehuda Katz, para a equipe do Rails 3.0 é sua incanssável luta para extrair todas as "habilidades mágicas" da estrutura monolítica atual do Rails para módulos separados e mais fáceis de manter. Um exemplo é o ActiveModel, uma nova biblioteca que oferece funcionalidades relacionadas a models do ActiveRecord, sem se prender às dependências de banco de dados.

Faça com que qualquer classe Ruby se comporte como um model do Rails

Ao extrair as funcionalidades de model do ActiveRecord, o ActiveModel torna possível adicionar esses comportamentos a qualquer classe Ruby, sem depender de nenhum banco de dados. Em seu último artigo, ActiveModel: Faça qualquer objeto Ruby se parecer com o ActiveRecord (em inglês), Yehuda mostra como criar objetos que tem funcionalidades de validação, serialização, callbacks, controle de alterações, internacionalização, atributos, observers e muitas outras funcionalidades do ActiveRecord.

Exemplo de código

Pegamos o exemplo principal do Yehuda de usar o ActiveModel em uma classe que não pertence ao Rails e o ampliamos para mostrar como ele seria utilizado:

require 'active_model'

class Person
  include ActiveModel::Validations

  validates_presence_of :first_name, :last_name

  attr_accessor :first_name, :last_name

  def initialize(first_name, last_name)
    @first_name, @last_name = first_name, last_name

  end
end

a = Person.new("Fred", nil)

a.valid? # => false
a.last_name = "Flintstone"

a.valid? # => true

Instalando o ActiveModel

Se você se interessou pelo ActiveModel mas não pelo Rails 3.0, saiba que é possível instalá-lo de maneira razoavelmente fácil (mesmo que ainda não seja tão fácil quanto instalar uma gem):

  1. Crie um diretório temporário
  2. git clone git://github.com/rails/rails.git
  3. cd rails
  4. rake gem
  5. gem install activesupport/pkg/activesupport-3.0.pre.gem
  6. gem install activemodel/pkg/activemodel-3.0.pre.gem

Depois de executar esses passo o exemplo acima deve funcionar sem problemas. Se você preferir brincar com o Rails 3.0 pre, dê uma olhada no artigo que o Yehuda escreveu sobre como baixar e criar uma nova aplicação com ele, mesmo sem instalá-lo como gem. Você também pode dar uma olhada nas experiências feitas pelo José Valim e pelo Fábio Akita com o Rails 3 pre, vale a pena ver como eles o estão estudando.

2 Comentários para “ActiveModel do Rails 3.0 – Coloque um pouco da mágica do ActiveRecord nas suas classes Ruby”

  1. #1
    Tweets that mention ActiveModel do Rails 3.0 - Coloque um pouco da mágica do ActiveRecord nas suas classes Ruby -- Topsy.com Disse:

    [...] This post was mentioned on Twitter by Ruby Inside Brasil, Tino Gomes, Leonardo Rodrigues, rscarvalho, Rafa Alves and others. Rafa Alves said: RT @rubyinside_br Novo artigo: ActiveModel Rails 3.0 - Coloque um pouco da mágica do ActiveRecord nas suas classes Ruby http://bit.ly/5gEeLm [...]

  2. #2
    12 links (em português) sobre Rails 3 | Ruby Brasil Disse:

    [...] Atualizando para o Rails 3: Parte 1 e Parte 2 Usando ruby-debug com Rails 3.0 no Ruby 1.9 ActiveModel do Rails 3.0 – Coloque um pouco da mágica do ActiveRecord nas suas classes Ruby Controllers no Rails 3 Rails 3: Introdução a Javascript Não-Obstrutivo e Responders De ‘Rails [...]

Deixe um Comentário