Conheça DataMapper ORM, o rubi interface unificada para armazenamentos de dados

Escritor | 23:33 Leave a Comment
A capacidade de ficar "na zona" é uma característica fundamental de qualquer desenvolvedor produtivo, com a distração mais ínfimo capaz de fazer picadinho de um dia de trabalho de outra forma bem-sucedida. A distração freqüentemente discutido é externo, o resultado de um colega ou de passagem de bombeiros extraordinariamente falador. No entanto, distrações internas são igualmente abundantes. Uma das distrações mais notáveis ​​ocorre quando o desenvolvedor é obrigado a se entrelaçam várias bibliotecas juntos, com cada um oferecendo suas próprias peculiaridades sintáticas.

Neste artigo vou apresentar DataMapper, mostrando-lhe como integrá-lo em um aplicativo de Sinatra.Mesmo se você não estiver familiarizado com Sinatra , o código Ruby demonstrado ao longo vai ser simples o suficiente para até mesmo um início programador Ruby para acompanhar muito bem.

Instalando DataMapper

DataMapper está disponível como uma jóia Ruby, ou seja, você pode instalá-lo usando RubyGems:
$ Gem install data_mapper
Buscando: data_mapper-1.1.0.gem (100%)
Instalado com sucesso data_mapper-1.1.0
1 gema instalado
Instalando a Documentação ri para data_mapper-1.1.0 ...
Instalando documentação RDoc data_mapper-1.1.0 ...
Depois de instalar DataMapper, você deve instalar um adaptador de banco de dados. Mais de 30 adaptadores estão disponíveis; ver o wiki DataMapper para uma lista completa. Para os fins deste artigo, vou instalar o adaptador MySQL:
$ Gem install dm-mysql-adaptador
Buscando: dm-mysql-adaptador-1.1.0.gem (100%)
Instalado com sucesso dm-mysql-adaptador-1.1.0
1 gema instalado
Instalando a Documentação ri para dm-mysql-adaptador-1.1.0 ...
Instalando documentação RDoc para dm-mysql-adaptador-1.1.0 ...

laro, você vai além disso precisam ter acesso a um servidor MySQL, a fim de seguir junto com esses exemplos.


Criando um Modelo DataMapper



DataMapper interage com os dados subjacentes de um recurso por meio de um modelo, que permite funcionalidade específica de dados nitidamente separada do resto da aplicação. Suponha que queria usar o fantástico quadro Sinatra em conjunto com DataMapper para criar um aplicativo da Web, que geria a nossa biblioteca de vídeo game. Ajogos esquema de tabela que conterá os jogos se parece com isso:



mysql> CREATE jogos de mesa (
id inteiro sem sinal NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR (255) NOT NULL,
VARCHAR plataforma (10) NOT NULL,
created_at DATETIME NOT NULL
);
Mas ao invés de criar e gerenciar separadamente os esquemas de tabela, você pode contar com recursos de migração de esquema internas do Datamapper para realizar o trabalho manual para você (mas você vai precisar para criar o banco de dados utilizado para armazenar as tabelas). Depois de criar o diretório do projeto, crie um diretório chamado modelos que reside no diretório do projeto, e dentro do modelos diretório crie um arquivo chamado Game.rb :
Jogo classe
incluem Resource DataMapper ::

propriedade: id, Serial
propriedade: nome, String
propriedade: plataforma, String

fim
Esse modelo simples define uma chave primária chamada id , e duas propriedades baseadas em string adicional chamado nome e plataforma . Embora parece que qualquer outra classe, DataMapper vai saber tratá-la de forma diferente por causa da referência ao DataMapper :: Resource .
Com o modelo definido, criar um app.rb arquivo no diretório do projeto Sinatra, e adicione o seguinte conteúdo a ele:
require 'rubygems'
require 'Sinatra'
require 'data_mapper'
require 'erb'

# Incluir os modelos
require 'models / Jogo'

# Connect para MySQL
DataMapper.setup (: por defeito, "mysql: // usuário: senha @ localhost / dev_gamelibrary")

# Certifique-se que as tabelas de banco de dados corresponder aos modelos
DataMapper.auto_migrate!
Em seguida, o fogo até o app Sinatra por usual:
$ Ruby app.rb
== Sinatra / 1.2.6 tomou o palco em 4567 para o desenvolvimento com a cópia do conteúdo do Mongrel
Jogo modelo será analisado e uma tabela correspondente nomeado jogos criado dentro do banco de dados, ou modificados para coincidir com a versão mais recente do Jogo modelo:
mysql> descrever jogos;
+ ---------- + ------------------ + ------ + ----- + ------ --- + + ----------------
| Campo | Tipo | Null | Key | Padrão | Extra |
+ ---------- + ------------------ + ------ + ----- + ------ --- + + ----------------
| Id | int (10) sem assinatura | NO | PRI | NULL | auto_increment |
| Nome | varchar (50) | SIM | | NULL | |
| Plataforma | varchar (50) | SIM | | NULL | |
+ ---------- + ------------------ + ------ + ----- + ------ --- + + ----------------
Tente fazer alterações ao modelo e reiniciar o aplicativo Sinatra; você vai ver as mudanças de forma transparente propagar para o jogos de mesa!
Aliás, inteiros e strings baseado em varchar são apenas alguns dos muitos tipos de dados suportados pela DataMapper. Além disso, é fácil de ajustar propriedades para substituir os padrões, como o limite de VARCHAR 50 caracteres utilizados na jogos de mesa. Consulte a documentação DataMapper para todos os detalhes.