module Mongous::Base
Public Instance Methods
client()
click to toggle source
# File lib/mongous/base.rb, line 94 def client if not self.class_variable_defined?( :@@client ) connect! end self.class_variable_get( :@@client ) end
client=( new_client )
click to toggle source
# File lib/mongous/base.rb, line 101 def client=( new_client ) if not new_client.is_a?( ::Mongo::Client ) raise Mongous::Error, "type invalid. : #{ new_client }" end self.class_variable_set( :@@client, new_client ) end
connect( hosts_or_uri = nil, file: nil, mode: nil, loglevel: nil, **options )
click to toggle source
# File lib/mongous/base.rb, line 11 def connect( hosts_or_uri = nil, file: nil, mode: nil, loglevel: nil, **options ) case hosts_or_uri when Array, String hosts_or_uri when NilClass if file mode ||= "development" text = ::File.open( file ).read rescue raise( Mongous::Error, "could not load #{ file }" ) yaml = ::ERB.new( text ).result rescue raise( Mongous::Error, "could not parse by ERB: #{ file }" ) hash = ::YAML.load( yaml ) conf = hash[mode]["clients"]["default"] hosts_or_uri = conf["uri"] if hosts_or_uri conf.delete( "uri" ) options.merge!( conf ) else hosts_or_uri = conf["hosts"] conf.delete( "hosts" ) database = conf["database"] conf.delete( "database" ) options.merge!( conf ) options["database"] = database end else hosts_or_uri = [ "localhost:27017" ] options[:database] = "test" if options[:database].nil? || options[:database].empty? end end ::Mongo::Logger.logger.level = loglevel || Logger::ERROR ::Mongo::Client.new( hosts_or_uri, options ) end
connect!( hosts_or_uri = nil, **options )
click to toggle source
# File lib/mongous/base.rb, line 48 def connect!( hosts_or_uri = nil, **options ) client_ = connect( hosts_or_uri, **options ) self.class_variable_set( :@@client, client_ ) end
document!( *names, **opts )
click to toggle source
# File lib/mongous/base.rb, line 53 def document!( *names, **opts ) raise Mongous::Error, "missing argument." if names.empty? names.each do |name| case name when String name when Symbol name = name.to_s else raise Mongous::Error, "type invalid. : #{ name }" end raise Mongous::Error, "missing argument." unless /^[A-Z]/.match(name) if Object.const_defined?( name ) if Object.const_get( name ).include?( Mongous::Document ) Object.class_eval{ remove_const( name ) } else raise Mongous::Error, "type invalid. : #{ Object.class_eval(name) }" end end klass = Object.class_eval <<-CLASS class #{name} include Mongous::Document end CLASS if opts[:timestamp] klass.class_eval do field :created_at, Time, create: proc{ Time.now } field :updated_at, Time, update: proc{ Time.now } index :created_at index :updated_at end end end end
Also aliased as: attach!
loger()
click to toggle source
# File lib/mongous/base.rb, line 108 def loger ::Mongo::Logger.logger end