Class: DjSplit::Split

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

Constant Summary collapse

OPTIMAL_SPLIT_SIZE =
200
DEFAULT_SPLIT_INDEX =
2
STALE_JOBS_TIMEOUT =

Seconds. Can be passed in options.

900
SLEEP_TIME =

Seconds.

0.2

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Split

Returns a new instance of Split.



9
10
11
12
13
14
# File 'lib/dj_split/split.rb', line 9

def initialize(options)
  @queue_options  = options[:queue_options] || {}
  @split_group_id = get_random_split_group_id
  @queue_options.merge!(split_group_id: @split_group_id)
  @split_options = options[:split_options] || {}
end

Instance Method Details

#enqueue(object, method_name, *args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/dj_split/split.rb', line 16

def enqueue(object, method_name, *args)
  splitting_index = get_splitting_index
  sliced_ids_array = get_sliced_ids(args[splitting_index])

  sliced_ids_array.each do |slice_set|
    args[splitting_index] = slice_set
    delayed_job_object = Delayed::PerformableMethod.new(object, method_name.to_sym, args)
    Delayed::Job.enqueue(delayed_job_object, @queue_options) 
  end

  wait_check_and_execute_delayed_jobs
end