MagLev é uma implementação da linguagem Ruby feita pela empresa GemStone sobre sua VM Smalltalk. GemStone/S, que é a VM Smalltalk da GemStone, está aí há décadas e é particularmente conhecida por sua capacidade, já bastante experimentada, de distribuição e persistência.
MagLev foi anunciado em 2008, e, desde então, a equipe tem estado bastante ocupada trabalhando no projeto. Depois de um período em uma versão alpha (privada), o gato saiu da saco: uma versão pública do MagLev está disponível, e inclui o código fonte do MagLev, que está hospedado no GitHub.
Para experimentar o MagLev, primeiro obtenha o código fonte com um rápido
git clone git://github.com/MagLev/maglev.git
seguido de um
./install.sh
no diretório do código fonte e siga as instruções que seguem.
Para iniciar o MagLev use o comando
rake maglev:start
para arrancar o sistema. Uma maneira rápida de rodar código Ruby é maglev-irb
, que irá conectar com o backend do MagLev. Também estão disponíveis os comandos maglev-ruby
e maglev-gem
.
Com uma rápida olhada no diretório de exemplos encontra-se o hat_trick (truque da cartola) que o Avi Bryant mostrou na primeira demonstração do MagLev. Ele mostra os recursos de persistência, que permitem configurar um objeto em uma instância irb
e então acessá-lo em outra instância.
Para reproduzir este exemplo, simplesmente inicie o MagLev e duas instâncias do maglev-irb
. Para criar um objeto persistente, execute o trecho de código a seguir em uma instância do maglev-irb
:
Maglev.persistent do Maglev::PERSISTENT_ROOT[:stuff] = ["hello world"] end Maglev.commit_transaction
Vá para a outra instância maglev-irb
e execute:
Maglev::PERSISTENT_ROOT[:stuff]
isso irá retornar a string "hello world".
Obviamente, isto é uma demonstração bastante simples dos recursos de persistência; veja o link a seguir para maiores detalhes da API de persistência do MagLev.
Um exemplo ligeiramente mais envolvente é uma implementação PStore Ruby usando os recursos de persistência. Ela mostra como os recursos de persistência do GemStone torna fácil a manutenção de todo o grafo de objetos persistentes sem ter que lida com um ORM.
Enquanto Rails ainda não é suportado pelo MagLev, exemplos funcionais de Rack e Sinatra estão disponíveis.
Um Trac público para o MagLev está disponível para acompanhar o progresso. Para questões de compatibilidade, este gráfico mostra o números de RubySpecs testadas, enquanto que links para resultados detalhados estão disponíveis também.
Nenhum detalhe sobre questões de licensa do MagLev parecem estar disponíveis, mas a GemStone oferece versões grátis, por exemplo, da GemStone/S que acompanha o framework web Seaside, que é free até 4 GB de dados.
Enquanto, hoje em dia, existe muito burburinho em torno dos bancos de dados NoSQL, a GemStone/S é uma solução bastante experimentada que está no mercado há muito tempo. MagLev fortemente integra estes recursos com Ruby. Qual a sua opinião - irá experimentar o MagLev?