зеркало из https://github.com/github/ruby.git
32 строки
597 B
Ruby
32 строки
597 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Bundler
|
|
module SafeMarshal
|
|
ALLOWED_CLASSES = [
|
|
Array,
|
|
FalseClass,
|
|
Gem::Specification,
|
|
Gem::Version,
|
|
Hash,
|
|
String,
|
|
Symbol,
|
|
Time,
|
|
TrueClass,
|
|
].freeze
|
|
|
|
ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed."
|
|
|
|
PROC = proc do |object|
|
|
object.tap do
|
|
unless ALLOWED_CLASSES.include?(object.class)
|
|
raise TypeError, format(ERROR, object.class, ALLOWED_CLASSES.join(", "))
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.proc
|
|
PROC
|
|
end
|
|
end
|
|
end
|