Publicado por Rafael Rosa em 31 de March de 2010
Supermodel – Um jeito simples de criar modelos em memória usando o ActiveModel
O Supermodel é uma nova biblioteca escrita por Alex Maccaw que usa o ActiveModel do Rails 3.0 para criar um sistema de armazenamento de dados em memória que funcionam como objetos ActiveRecord comuns em Ruby.
É mais fácil explicar o que o Supermodel faz com um exemplo básico:
require 'supermodel'
class Person < SuperModel::Base; end
a = Person.new( :name => "Jim" )
a.save
Person.find_by_name('Jim') # => #<Person>
Person.all # => [#<Person>]
E isso é apenas o começo! Por padrão o Supermodel suporta validações, callbacks, observers, rastreamento de alterações de dados (dirty change tracking) e serialização. Ele também permite que você transforme estruturas armazenadas em memória em objetos serializados salves em disco ou até mesmo armazenados em um banco Redis, e nem precisa de miuta mágica para fazer isso
Veja um exemplo mais elaborado, que inclui IDs gerados aleatóriamente e algumas validações:
require 'supermodel'
class Person < SuperModel::Base
include SuperModel::RandomID
attributes :name
validates_presence_of :name
end
a = Person.new
a.valid? # => false
a.name = "Jim"
a.valid? # => true
a.save
a.id # => "6481a4fcd834e567836587c6da"
Ainda é cedo para afirmar, mas acredito que o Supermodel pode se tornar uma biblioteca muito utilizada por desenvolvedores que não usam Rails. A versão em forma de gem ainda não tem suporte à relacionamentos, mas a última versão no GitHub já traz suporte ao belongs_to e ao has_many. Alex escreveu o código de maneira bem estruturada e não parece ser muito complicado escrever novos módulos ou subclasses que adicionem suporte à outros backends, como, por exemplo, o Tokyo Cabinet.
Essa biblioteca é muito promissora e acabou se tornando o que eu esperava que o ActiveModel fosse. Ela oferece a dose certa de abstração e separação do banco de dados, mas sem abrir mão dos benefícios que estamos a costumados a ter quando usamos o ActiveRecord.

Clique aqui para adicionar ao del.icio.us

31 de March de 2010 às 10:11
[...] This post was mentioned on Twitter by Garoto que programa. Garoto que programa said: #Ruby Supermodel - Um jeito simples de criar modelos em memória usando o ActiveModel: O Supermodel é uma nova bibl... http://bit.ly/d4m7Ot [...]
31 de March de 2010 às 10:13
[...] This post was mentioned on Twitter by Alessandro Martins. Alessandro Martins said: Novo artigo: Supermodel - Um jeito simples de criar modelos em memória usando o ActiveModel http://bit.ly/aYHzT9 (via @rubyinside_br) [...]
31 de March de 2010 às 22:24
[...] This post was mentioned on Twitter by Ruby Inside Brasil and Alessandro Martins, Constantino Neto. Constantino Neto said: RT @rubyinside_br: Novo artigo: Supermodel - Um jeito simples de criar modelos em memória usando o ActiveModel http://bit.ly/aYHzT9 [...]