Module: Marshal

Defined in:
lib/active_support/core_ext/marshal.rb

Overview

This patch is going into active-support (rails 4). github.com/rails/rails/pull/8246

Class Method Summary collapse

Class Method Details

.load_with_autoloading(source) ⇒ Object



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

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