Module: Delayed::PsychExt::ToRuby

Defined in:
lib/delayed/yaml_extensions.rb

Instance Method Summary collapse

Instance Method Details

#resolve_class(klass_name) ⇒ Object



91
92
93
94
95
96
# File 'lib/delayed/yaml_extensions.rb', line 91

def resolve_class(klass_name)
  return nil if !klass_name || klass_name.empty?
  klass_name.constantize
rescue
  super
end

#visit_Psych_Nodes_Scalar(object) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/delayed/yaml_extensions.rb', line 75

def visit_Psych_Nodes_Scalar(object)
  case object.tag
  when %r{^!ruby/ActiveRecord:(.+)$}
    begin
      klass = resolve_class(Regexp.last_match[1])
      klass.unscoped.find(object.value)
    rescue ActiveRecord::RecordNotFound
      raise Delayed::Backend::RecordNotFound, "Couldn't find #{klass} with id #{object.value.inspect}"
    end
  when "tag:ruby.yaml.org,2002:Delayed::Periodic", "!ruby/Delayed::Periodic"
    Delayed::Periodic.scheduled[object.value] || raise(NameError, "job #{object.value} is no longer scheduled")
  else
    super
  end
end