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.

  • :debug (Boolean)

    whether to show messages during the process.



38
39
40
41
42
43
44
45
# File 'lib/mongo_mapper_parallel.rb', line 38

def initialize(opts={})
  @key        = opts[:key]
  @compiler   = opts[:compiler]
  @position   = opts[:position]
  @future_key = opts[:future_key]
  @completed  = false
  @debug      = opts[:debug].nil? ? true : opts[:debug]
end

Instance Attribute Details

#compilerObject (readonly)

Returns the value of attribute compiler.



28
29
30
# File 'lib/mongo_mapper_parallel.rb', line 28

def compiler
  @compiler
end

#completedObject

Returns the value of attribute completed.



27
28
29
# File 'lib/mongo_mapper_parallel.rb', line 27

def completed
  @completed
end

#debugObject

Returns the value of attribute debug.



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

def debug
  @debug
end

#future_keyObject

A chunk that will be parallelized



25
26
27
# File 'lib/mongo_mapper_parallel.rb', line 25

def future_key
  @future_key
end

#keyObject

Returns the value of attribute key.



26
27
28
# File 'lib/mongo_mapper_parallel.rb', line 26

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



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

def args;          @compiler.args;          end

#command_classClass

The Ruby Class representing the collection containing the resources

Returns:

  • (Class)


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

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.



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/mongo_mapper_parallel.rb', line 65

def compile
  search_opts = {:name => {:$gte => @key}}
  if @future_key then search_opts[:name][:$lte] = @future_key  end
  begin
    command_class.database.command({
      :"$eval" => javascript,
      :args    => [@key, @future_key, args],
      :nolock => true
      })
  rescue Mongo::ConnectionFailure
    raise Mongo::ConnectionFailure.new "Connection disconnected at position #{@position}"
  end
  @completed = true
  puts "Completed chunk (#{@position})".green if @debug
end

#javascriptString

The javascript function to run on the resources

Returns:

  • (String)

    The function to run.



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

def javascript;    @compiler.javascript;    end