MongoDB Factory
Uma gem Ruby que fornece um cliente MongoDB com padrão Singleton e operações comuns de banco de dados.
Instalação
Adicione esta linha ao seu Gemfile:
gem 'mongodb_factory'
E execute:
$ bundle install
Ou instale diretamente:
$ gem install mongodb_factory
Configuração
Configure as variáveis de ambiente para conexão com MongoDB:
# Opção 1: Variáveis padrão
export USER=seu_usuario_mongodb
export PASSWORD=sua_senha_mongodb
export HOST=seu_host_mongodb
export DATABASE=seu_database_mongodb
# Opção 2: Variáveis específicas do MongoDB
export MONGODB_USER=seu_usuario_mongodb
export MONGODB_PASSWORD=sua_senha_mongodb
export MONGODB_HOST=seu_host_mongodb
export MONGODB_DATABASE=seu_database_mongodb
Uso
Básico
require 'mongodb_factory'
# Usando o padrão Singleton
client = MongodbFactory::Client.instance
# Ou criando uma nova instância com string de conexão customizada
client = MongodbFactory::Client.new("mongodb://localhost:27017/meu_database")
Operações CRUD
# Inserir múltiplos documentos
data = [
{ name: "João", age: 30 },
{ name: "Maria", age: 25 }
]
client.insert_many("users", data)
# Buscar documentos
users = client.find("users", { age: { "$gte" => 25 } })
# Buscar com ordenação e limite
recent_users = client.find_sort("users", {}, { created_at: -1 }, 10)
# Atualizar documento
client.update("users", { name: "João" }, { "$set" => { age: 31 } })
Operações Especializadas
# Contar status de requests (método específico do domínio)
status_counts = client.count_status_requests("requests")
# Upsert de logs
document = { ms: 1234567890, message: "Log entry", created_at: Time.now }
client.upsert_log_to_mongo("logs", document)
# Buscar grupos de log
log_groups = client.fetch_log_groups_from_mongo
# Obter última execução
last_run = client.get_last_run_from_mongo("executions", 1234567890)
Métodos Disponíveis
insert_many(collection_name, data)- Insere múltiplos documentosfind(collection_name, query)- Busca documentosfind_sort(collection_name, query, sort, limit)- Busca com ordenação e limiteupdate(collection_name, query, update_query)- Atualiza documentoupdate_log_group(collection_name, query, update_query, upsert: false)- Atualiza com opção de upsertcount_status_requests(collection_name)- Conta status de requests por domínioupsert_log_to_mongo(collection_name, document)- Upsert de logsupsert_log_to_mongo_log_group(collection_name, document)- Upsert de grupos de logfetch_log_groups_from_mongo- Busca grupos de logget_last_run_from_mongo(collection_name, ms)- Obtém última execução
Desenvolvimento
Após clonar o repositório:
$ bundle install
$ rake spec # Para executar os testes
Contribuição
- Faça um Fork do projeto
- Crie uma branch para sua feature (
git checkout -b my-new-feature) - Commit suas mudanças (
git commit -am 'Add some feature') - Push para a branch (
git push origin my-new-feature) - Crie um Pull Request
Licença
Esta gem está disponível como código aberto sob os termos da Licença MIT.