Ruby – Og: ObjectGraph

Há alguns dias (não lembro como…) descobri o Nitro, um framework para desenvolvimento web ágil em Ruby. Um detalhe interessante é que ele usa o Og (mesmo site do Nitro) para abstrair a persistência dos dados. O Og serve de interface entre sua aplicação e o sistema de persistência, como um banco de dados MySQL.

Este tutorial (baseado neste, mas atualizado para a nova API do Og) mostra a instalação e um exemplo de uso _muito_ simples do Og: Armazenar apenas uma classe no banco de dados. No próximo tutorial (até segunda, se der tudo certo…) o assunto será usar Og com várias classes relacionadas. No final, o objetivo é criar a estrutura para controlar um mini-sistema de blog, com categorias (tags), artigos e comentários. O banco de dados utilizado será o MySQL. Mãos à obra!

Como a maioria das bibliotecas em Ruby, a instalação é bastante facilitada pelo uso dos “Gems”. Para instalar o Og, basta executar o comando abaixo:

gem install og

Nossa classe exemplo será a mais simples possível: Uma categoria. Em Ruby “puro”, o código seria o seguinte:

class Categoria
    attr_accessor :nome
end

Devido à tipagem dinâmica de Ruby, você não precisa definir o tipo da variável nome (uma String). Apesar disso, é necessário especificar o tipo uma vez que esse dado será armazenado no banco de dados e ele não consegue descobrir qual o tipo desse dado. Para solucionar esse problema, Og substitui o attr* por prop*. Os métodos prop permitem adicionar metadados aos atributos:

attr        =>; prop
attr_accessor    =>t; prop_accessor
attr_reader    =>; prop_reader
attr_writer    =>; prop_writer

Para melhor legibilidade, Og fornece o método property. Usando esse método, nossa classe ficaria assim:

class Categoria
    property :nome, String
end

Uma vez que nossa classe está pronta, é hora de acessar o banco de dados. Para isso, Og usa o método setup, que recebe um Hash com as opções de configuração. No nosso exemplo, vamos usar a configuração seguinte (Os parâmetros :name, :user e :password podem ser diferentes no seu caso):

config = {
    :destroy =>; false,    # nao destruir os dados se eles ja existirem
    :store =>; :mysql,    # adaptador utilizado: MySQL
    :name =>; 'test',    # nome da base de dados utilizada
    :user =>; 'root',    # nome de usuário
    :password =>; ''        # senha
}

Logo em seguida é só ativar a conexão:

db = Og.setup(config)

A partir daí você pode usar os métodos create (criar um objeto) e save (salvar no banco de dados) para manipular os objetos. Caso uma tabela ou mesmo o banco de dados não exista no servidor MySQL, Og cuida de criar todo o necessário para armazenar aquele objeto no servidor.

cat = Category.create("Ruby")
cat.save

Por hoje é só e até a próxima!

Update: A segunda parte desse tutorial vai demorar um pouco, uma vez que outros projetos e provas estão sugando minha alma….


Um Comentário

  1. Olá lauro,

    vi seu comentário no seu blog e passei para uma visita no seu!!!

    Muito show o seu blog…

    Sou um cara que adora informática, tenho um curso técnico e sou autodidata. Não sei muito ainda mas estou estudando. rs

    Estou começando agora na FATEC e é mais um insentivo para estudar tudo que vejo pela frente!!!

    Muito interessante seu blog, tem tudo para se tornar referência!!!

    abraços


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s