blob: 56c79c04bdabaedb9a071a4cbc0c2f343adab96b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
require 'active_support/core_ext/module/aliasing'
module Marshal
class << self
def load_with_autoloading(source)
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
alias_method_chain :load, :autoloading
end
end
|