sinatra-mongoid-config
Add Monogid to your Sinatra app with potentially zero-configuration. Lazily create the database connection whenever needed.
Installation
It‘s available as a gem via RubyGems.org, so use standard procedure:
$ gem install sinatra-mongoid-config
If you're using Bundler, just add gem "sinatra-mongoid-config"
to your Gemfile
.
Using the Extension
This extension works fine with both “classic” Sinatra apps, as well as “modular” apps which inherit from Sinatra::Base
. How you use the extension varies slightly between styles.
“Classic”
require 'rubygems'
require 'sinatra'
require 'sinatra-mongoid-config'
get '/' do
'It works!'
end
“Modular”
require 'rubygems'
require 'sinatra'
require 'sinatra-mongoid-config'
class MyApp < Sinatra::Base
register Sinatra::MongoidConfig
get '/' do
'It works!'
end
end
Options & Defaults
All options are set using Sinatra’s standard set
method. Remember that you can also change settings for each environment:
configure do
set :mongo_db, 'the_database'
set :mongo_port, 123
end
configure :production do
set :mongo_db, 'the_other_database'
set :mongo_user, 'the_user'
set :mongo_password, 'the_password'
end
Defaults
All configuration options have sensible defaults listed below, and depending on your situation, you may not have to set anything.
Option | Default |
---|---|
:mongo_host |
ENV['MONGO_HOST'] || 'localhost' |
:mongo_db |
ENV['MONGO_DB'] || self.app_to_db_name(app) |
:mongo_port |
ENV['MONGO_PORT'] || Mongo::Connection::DEFAULT_PORT |
:mongo_user |
ENV['MONGO_USER'] |
:mongo_password |
ENV['MONGO_PASSWORD'] |
Default DB Naming Convention
Did you notice that the default for :mongo_db
calls self.app_to_db_name
? That method attempts to be smart about what your database is named by using the class name of your app and the current environment. The real benefit here is for those who are creating "modular" apps, as they are named something other than the Sinatra default. Here are some examples:
App’s Class Name | Environment | Resulting Database Name |
---|---|---|
Refresh |
:development |
'refresh_development' |
RefreshChicago |
:test |
'refresh_chicago_test' |
RefreshChicago::Jobs |
:production |
'refresh_chicago_jobs_production' |
Sinatra::Application |
:development |
'sinatra_application_development' |
Alternatives
- Dan Croak's sinatra-mongoid
- Ethan Gunderson's sinatra-mongo-config