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.

3 Comentários para “Supermodel – Um jeito simples de criar modelos em memória usando o ActiveModel”

  1. #1
    Tweets that mention Supermodel - Um jeito simples de criar modelos em memória usando o ActiveModel -- Topsy.com Disse:

    [...] 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 [...]

  2. #2
    Tweets that mention Supermodel - Um jeito simples de criar modelos em memória usando o ActiveModel -- Topsy.com Disse:

    [...] 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) [...]

  3. #3
    Tweets that mention Supermodel - Um jeito simples de criar modelos em memória usando o ActiveModel -- Topsy.com Disse:

    [...] 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 [...]

Deixe um Comentário