Sha256: 7382ba68c32db6d7cb45608eafdbec515bc8a9a1e03dc0c5bc7aeab902eb3a9d

Contents?: true

Size: 845 Bytes

Versions: 2

Compression:

Stored size: 845 Bytes

Contents

require 'sinatra/base'
require 'mongo'

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
      synchronize do
        @mongo ||= (
          url = URI(mongo_url)
          connection = Mongo::Connection.new(url.host, url.port)
          mongo = connection.db(url.path[1..-1], mongo_settings)
          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.set :mongo_settings, Hash.new
      app.helpers MongoHelper
    end

  end

  register MongoExtension

end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
sinatra-mongo-0.1.0 lib/sinatra/mongo.rb
bmizerany-sinatra-mongo-0.0.3 lib/sinatra/mongo.rb