Class: Resequencer

Inherits:
Object
  • Object
show all
Defined in:
backend/app/lib/resequencer.rb

Constant Summary

@@klasses =
[ :ArchivalObject, :DigitalObjectComponent, :ClassificationTerm]

Class Method Summary (collapse)

Class Method Details

+ (Object) resequence(klass)



19
20
21
22
23
24
25
26
27
28
29
# File 'backend/app/lib/resequencer.rb', line 19

def resequence(klass)
  repos = Repository.dataset.select(:id).map {|rec| rec[:id]} 
  repos.each do |r|
    DB.attempt {
      Kernel.const_get(klass).resequence(r)
    }.and_if_constraint_fails {
      return 
      # if there's a failure, just keep going.  
    } 
  end
end

+ (Object) resequence_all



31
32
33
34
35
# File 'backend/app/lib/resequencer.rb', line 31

def resequence_all
  @@klasses.each do |klass|
    self.resequence(klass)
  end
end

+ (Object) run(klasses = @@klasses)



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'backend/app/lib/resequencer.rb', line 38

def run(klasses = @@klasses )
  $stderr.puts "*" * 100
  $stderr.puts "*\t\t STARTING RESEQUENCER  \t\t*"
  $stderr.puts "*\t\t This is a utility that will organize and compact objects trees to ensure their validity. \t\t *" 
  $stderr.puts "*\t\t Duration of this process depends on the size of your data. \t\t *" 
  $stderr.puts "*\t\t It should NOT be used on every startup and instead should only be run in rare occassions that require data maintance. \t\t *" 
  $stderr.puts "*" * 100
  begin
    @running.update { |r| r = true }  
    klasses = klasses & @@klasses 
    $stderr.puts klasses 
    klasses.each do |klass|
      $stderr.puts klass
      self.resequence(klass) 
    end 
  ensure
    @running.update { |r| r =  false } 
  end
  $stderr.puts "*" * 100
  $stderr.puts "*\t\t RESEQUENCER COMPLETE  \t\t*"
  $stderr.puts "*\t\t Be sure to set the AppConfig[:resequence_on_startup] to false to ensure quicker startups in the future. \t\t*"
  $stderr.puts "*" * 100

end

+ (Boolean) running?

Returns:

  • (Boolean)


15
16
17
# File 'backend/app/lib/resequencer.rb', line 15

def running?
  @running
end