CI collects SimpleCov coverage across the supported Ruby, Mongoid, and MongoDB matrix and combines parallel reports on Coveralls using GitHub's workflow token. Legacy Moped and modern driver paths run against their actual supported Mongoid versions, rather than being simulated in one job. To generate a local report, run COVERAGE=true MONGOID_VERSION=9 bundle install followed by COVERAGE=true MONGOID_VERSION=9 bundle exec rake spec. Reports are written to coverage/; a single Mongoid version cannot cover every version-specific path. Fresh-process entrypoint tests also collect coverage, including files loaded by Bundler before the main test suite starts.
Set MONGODB_PORT to redirect the fixture sessions' local socket connection (default: 27017). These tests render commands; they do not execute MongoDB shell tools or write to or drop databases.
Create mongo command-lines from Mongoid configuration.
For example, connect to your production database without having to remember the entire command line using a db:production:shell Rake task.
namespace :db
namespace :production
task :shell
Mongoid.load! File.join(Rails.root, "config/mongoid.yml"), :production
system Mongoid::Shell::Commands::Mongo.new.to_s
end
end
endCommands can be created for the current default session or you can pass a session as an argument to a new command.
Mongoid::Shell::Commands::Mongodump.new # will use Mongoid.default_session
Mongoid::Shell::Commands::Mongodump.new(session: Moped::Session.new([ "127.0.0.1:27017" ]))Commands accept parameters.
out = File.join(Dir.tmpdir, 'db_backup')
mongodump = Mongoid::Shell::Commands::Mongodump.new(db: 'another_database', out: out)
system mongodump.to_s # mongodump --db another_database --out /tmp/db_backupTo specify parameters multiple times, set them to arrays.
mongodump = Mongoid::Shell::Commands::Mongodump.new(excludeCollection: %w(users products))
system mongodump.to_s # mongodump --excludeCollection users --excludeCollection productsTo use output in logs, pass the mask_sensitive option to to_s.
> Mongoid::Shell::Commands::Mongo.new.to_s(mask_sensitive: true)
=> "mongo 59.1.22.1:27017/mongoid --username user --password ********"
> Mongoid::Shell::Commands::Mongo.new.to_s(mask_sensitive: '(masked)')
=> "mongo 59.1.22.1:27017/mongoid --username user --password (masked)"This gem supports Mongoid 3, 4, 5, 6, 7, 8 and 9.
The mongo shell is an interactive JavaScript shell for MongoDB. The Mongoid::Shell::Commands::Mongo class generates a command line to connect to MongoDB. A particularly useful feature is that it will always yield the address of the master node of a MongoDB replica set.
Mongoid::Shell::Commands::Mongo.new.to_sSupports --username, --password, --eval, --nodb, --norc, --quiet, --ipv6, --ssl and --authenticationDatabase.
Mongodump is a utility for creating a binary export of the contents of a database.
mongodump = Mongoid::Shell::Commands::Mongodump.new(collection: 'test')
mongodump.to_s # mongodump --db test --collection testThe Mongoid::Shell::Commands::Mongodump class supports --db, --host, --username, --password, --query, --out, --collection, --excludeCollection, --excludeCollectionsWithPrefix, --directoryperdb, --journal, --oplog, --repair, --forceTableScan, --dbpath, --ipv6, --ssl and --authenticationDatabase
For mongodump and mongoexport, query accepts an Extended JSON string or a Hash containing Extended JSON values. Hashes are serialized as JSON and queries are shell-escaped, preserving operators such as $eq and $date literally.
mongodump = Mongoid::Shell::Commands::Mongodump.new(
collection: 'history_trackers',
query: { scope: { '$eq' => 'offer' }, created_at: { '$gte' => { '$date' => '2019-12-24T09:36:56.312Z' } } }
)
system mongodump.to_sThe mongorestore tool imports content from binary database dump, created by mongodump into a specific database.
mongorestore = Mongoid::Shell::Commands::Mongorestore.new(collection: 'test', restore: '/tmp/db_backup')
mongorestore.to_s # mongorestore --db test --collection test /tmp/db_backupThe Mongoid::Shell::Commands::Mongorestore class supports --db, --host, --username, --password, --collection, --ipv6, --dbpath, --directoryperdb, --journal, --objcheck, --filter, --drop, --oplogReplay, --keepIndexVersion, --noIndexRestore, --ssl and --authenticationDatabase
The mongoexport tool produces a JSON or CSV export of data stored in a MongoDB instance.
mongoexport = Mongoid::Shell::Commands::Mongoexport.new(collection: 'traffic', out: 'traffic.json')
mongoexport.to_s # mongoexport --db test --collection traffic --out traffic.jsonThe Mongoid::Shell::Commands::Mongoexport class supports --verbose, --quiet, --version, --port, --ipv6, --ssl, --sslCAFile, --sslPEMKeyFile, --sslPEMKeyPassword, --sslCRLFile, --sslAllowInvalidCertificates, --sslAllowInvalidHostnames, --sslFIPSMode, --authenticationDatabase, --authenticationMechanism, --gssapiServiceName, --gssapiHostName, --collection, --fields, --fieldFile, --query, --csv, --type, --out, --jsonArray, --pretty, --slaveOk, --forceTableScan, --skip, --limit, --sort, --directoryperdb, --journal, --dbpath.
The mongoimport tool imports content from an Extended JSON, CSV, or TSV export created by mongoexport, or potentially, another third-party export tool.
mongoimport = Mongoid::Shell::Commands::Mongoimport.new(collection: 'contacts', file: 'contacts.json')
mongoimport.to_s # mongoimport --db test --collection contacts --file contacts.jsonThe Mongoid::Shell::Commands::Mongoimport class supports --verbose, --quiet, --version, --host, --username, --password, --port, --ipv6, --ssl, --sslCAFile, --sslPEMKeyFile, --sslPEMKeyPassword, --sslCRLFile, --sslAllowInvalidCertificates, --sslAllowInvalidHostnames, --sslFIPSMode, --authenticationDatabase, --authenticationMechanism, --gssapiServiceName, --gssapiHostName, --db, --collection, --fields, --directoryperdb, --journal, --dbpath, --fieldFile, --ignoreBlanks, --type, --file, --drop, --headerline, --upsert, --upsertFields, --stopOnError, --jsonArray, --maintainInsertionOrder, --numInsertionWorkers, --writeConcern.
The mongostat utility provides a quick overview of the status of a currently running mongod or mongos instance.
The Mongoid::Shell::Commands::Mongostat class supports --host, --username, --password, --rowcount, --discover, --noheaders, --http, --all, --ssl and --authenticationDatabase.
Fork the project. Make your feature addition or bug fix with tests. Send a pull request. Bonus points for topic branches.
MIT License, see LICENSE for details.
(c) 2013-2026 Daniel Doubrovkine, Artsy Inc.