Class: MongoMapperParallel::Key

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo_mapper_parallel.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Key

A chunk that will be parallelized

Parameters:

  • opts (Hash) (defaults to: {})

    the options to create the chunk.

Options Hash (opts):

  • :key (String)

    the lower bound of the range of resources to retrieve

  • :future_key (String)

    the upper bound for the range of resources to retrieve

  • :compiler (MongoMapperParallel)

    the Parallel execution object that holds the keys, javascript, and arguments.



29
30
31
32
33
34
# File 'lib/mongo_mapper_parallel.rb', line 29

def initialize(opts={})
	@key        = opts[:key]
	@compiler   = opts[:compiler]
	@future_key = opts[:future_key]
	@completed  = false
end

Instance Attribute Details

#compilerObject (readonly)

Returns the value of attribute compiler.



20
21
22
# File 'lib/mongo_mapper_parallel.rb', line 20

def compiler
  @compiler
end

#completedObject

Returns the value of attribute completed.



19
20
21
# File 'lib/mongo_mapper_parallel.rb', line 19

def completed
  @completed
end

#future_keyObject

A chunk that will be parallelized



17
18
19
# File 'lib/mongo_mapper_parallel.rb', line 17

def future_key
  @future_key
end

#keyObject

Returns the value of attribute key.



18
19
20
# File 'lib/mongo_mapper_parallel.rb', line 18

def key
  @key
end

Instance Method Details

#argsArray, Hash

The arguments to pass to the Javascript function to run on the resources

Returns:

  • (Array, Hash)

    The arguments to pass to the javascript function



45
# File 'lib/mongo_mapper_parallel.rb', line 45

def args;          @compiler.args;          end

#command_classClass

The Ruby Class representing the collection containing the resources

Returns:

  • (Class)


50
# File 'lib/mongo_mapper_parallel.rb', line 50

def command_class; @compiler.command_class; end

#compileObject

Sends the Javascript function, the range, and the arguments to the MongoDB instance for computation via the db.runCommand command.



54
55
56
57
58
59
60
61
62
63
64
# File 'lib/mongo_mapper_parallel.rb', line 54

def compile
	search_opts = {:name => {:$gte => @key}}
	if @future_key then search_opts[:name][:$lte] = @future_key	end
	command_class.database.command({
		:"$eval" => javascript,
		:args    => [@key, @future_key, args],
		:nolock => true
		})
	@completed = true
	puts "Completed chunk".green
end

#javascriptString

The javascript function to run on the resources

Returns:

  • (String)

    The function to run.



39
# File 'lib/mongo_mapper_parallel.rb', line 39

def javascript;    @compiler.javascript;    end