Sha256: 978e8f478049ac80ba762ae6648de8dc5c3575f934f6c45e70c17d3b0d1abaa5

Contents?: true

Size: 787 Bytes

Versions: 1

Compression:

Stored size: 787 Bytes

Contents

require 'sinatra'

module Sinatra
  module MongoHelper
    def mongo
      options.mongo
    end
  end

  module MongoExtension
    def mongo=(url)
      @mongo = nil
      set :mongo_url, url
      mongo
    end

    def mongo
      url = URI(mongo_url)
      connection = Mongo::Connection.new(url.host, url.port)
      @mongo ||= begin
                   mongo = connection.db(url.path[1..-1])
                   if url.user && url.password
                     mongo.authenticate(url.user, url.password)
                   end
                   mongo
                 end
    end

    protected

    def self.registered(app)
      app.set :mongo_url, ENV['MONGO_URL'] || 'mongo://127.0.0.1:27017/default'
      app.helpers MongoHelper
    end

  end

  register MongoExtension

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sinatra-mongo-0.0.1 lib/sinatra/mongo.rb