Em ruby temos algumas gems para serem utilizadas com o CouchDB. Particularmente eu prefiro a gem CouchRest, construída pelos commiters do CouchDB (Chris Anderson é um deles). E um dos commiters do CouchRest (que vem fazendo um excelente trabalho) é o Marcos Tapajos da Improve IT e RedeParede.
Para saber mais como instalar e utilizar o CouchRest acesse a wiki no Github.
Vamos considerar a seguinte classe (Post) que herda ExtendedDocument da gem CouchRest
class Post < CouchRest::ExtendedDocument use_database DB #constante com as infos do seu banco property :titulo property :conteudo #será criado no banco uma view pelo título view_by :titulo end
Carregando todos os documentos com o “couchrest-type” Post
@posts = Post.all puts @posts.inspect
Carregando um documento pelo ID
#Sem excessões caso o documento não seja encontrado @post = Post.get("id_do_documento") puts @post.inspect #Será gerado uma excessão se o documento não for encontrado @post = Post.get!("id_do_documento") puts @post.inspect
Utilizando Views
A view criada pelo CouchRest
function(doc) { if ((doc['couchrest-type'] == 'Post') && doc['titulo']) { emit(doc['titulo'], null); } }
#Carregando todos do documentos com "couchrest-type" Post e que tenham um título @posts = Post.by_titulo puts "O número de posts encontrados foi #{@posts.count}" puts puts @posts.inspect #Carregando todos do documentos com "couchrest-type" Post e um título específico @posts = Post.by_titulo(:key => "Um título em específico") puts @posts.inspect