Module: Taskinator::Persistence

Included in:
Process, Task
Defined in:
lib/taskinator/persistence.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods Classes: LazyLoader, RedisCleanupVisitor, RedisDeserializationVisitor, RedisSerializationVisitor

Class Method Summary collapse

Class Method Details

.add_process_to_list(process) ⇒ Object



9
10
11
12
13
# File 'lib/taskinator/persistence.rb', line 9

def add_process_to_list(process)
  Taskinator.redis do |conn|
    conn.sadd processes_list_key(process.scope), process.uuid
  end
end

.deserialize(yaml) ⇒ Object



524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
# File 'lib/taskinator/persistence.rb', line 524

def deserialize(yaml)
  values = YAML.load(yaml)
  if values.is_a?(Array)
    values = values.collect {|value|
      (value.respond_to?(:model_id) && value.respond_to?(:find)) ? value.find : value
    }
  elsif values.is_a?(Hash)
    values.each {|key, value|
      values[key] = value.find if value.respond_to?(:model_id) && value.respond_to?(:find)
    }
  elsif values.respond_to?(:model_id) && values.respond_to?(:find)
    values = values.find
  end
  values
end

.included(klass) ⇒ Object

mixin logic



17
18
19
20
21
22
# File 'lib/taskinator/persistence.rb', line 17

def self.included(klass)
  klass.class_eval do
    extend ClassMethods
    include InstanceMethods
  end
end

.processes_list_key(scope = :shared) ⇒ Object



5
6
7
# File 'lib/taskinator/persistence.rb', line 5

def processes_list_key(scope=:shared)
  "taskinator:#{scope}:processes"
end

.serialize(values) ⇒ Object



508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
# File 'lib/taskinator/persistence.rb', line 508

def serialize(values)
  # special case, convert models to global id's
  if values.is_a?(Array)
    values = values.collect {|value|
      value.respond_to?(:global_id) ? value.global_id : value
    }
  elsif values.is_a?(Hash)
    values.each {|key, value|
      values[key] = value.global_id if value.respond_to?(:global_id)
    }
  elsif values.respond_to?(:global_id)
    values = values.global_id
  end
  YAML.dump(values)
end