Module: CoreExt::MarshalWithAutoloading

Defined in:
lib/core_ext/marshal.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#load(source) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/core_ext/marshal.rb', line 3

def load(source)
  super(source)
rescue ArgumentError, NameError => exc
  if exc.message.match(%r|undefined class/module (.+)|)
    # try loading the class/module
    $1.constantize
    # if it is an IO we need to go back to read the object
    source.rewind if source.respond_to?(:rewind)
    retry
  else
    raise exc
  end
end