Class: MongoWeb::Server

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/server.rb

Constant Summary collapse

DEFAULT_MONGO_HOST =
"localhost"
DEFAULT_MONGO_PORT =
27017
MONGO_CONNECTION_SETUP =
lambda { |r| r.app.set_mongo_connection_from_args(r.args.first) }
OPTIONS_SETUP =
proc do |runner, opts, app|
  opts.on('--mongo-username USERNAME', 'username for authentication against MongoDB database') do |mongo_username|
    app.set(:mongo_username, mongo_username)
  end

  opts.on('--mongo-password PASSWORD', 'password for authentication against MongoDB database') do |mongo_password|
    app.set(:mongo_password, mongo_password)
  end
  
  opts.banner = "Usage: #{$0 || app_name} [options] [database_connection_string]"
end

Class Method Summary collapse

Class Method Details

.set_mongo_connection_from_args(connection_string) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/server.rb', line 36

def self.set_mongo_connection_from_args(connection_string)
  host, port, database_name = connection_string.to_s.scan(/^(?:([^:]+?)(?::([^\/]+?))?\/)?(.+)$/).first
  effective_host = host || DEFAULT_MONGO_HOST
  effective_port = port || DEFAULT_MONGO_PORT
  
  connection = Mongo::Connection.new(effective_host, effective_port)
  set(:mongo, connection)
  
  if database_name && self.mongo_username && self.mongo_password
    database = mongo.db(database_name)
    database.authenticate(self.mongo_username, self.mongo_password)
    set(:mongo_database_name, database_name)
  else
    set(:mongo_admin, true)
  end
end