Проверка методов маршала - PullRequest
0 голосов
/ 06 декабря 2018

Marshal.dump не может сбросить классы, которые включают синглтон (собственный класс).Я хотел бы увидеть, как метод определяет наличие этого синглтона, но я не знаю, как найти источник.Я попробовал следующее:

dump_method = Marshal.method(:dump) #=> #<Method: Marshal.dump> 
dump_method.source_location # => nil

Я также быстро взглянул на https://github.com/ruby/ruby, но без возможности поиска я понятия не имею, где найти источник для маршала.

1 Ответ

0 голосов
/ 06 декабря 2018

Чек здесь , но он в C - и код МРТ печально неизвестен.

Я считаю, что чек, похожий на этот, но в Ruby, будет:

obj.singleton_class.instance_methods(false).empty? &&
obj.singleton_class.instance_variables.empty?

Если это false (т. Е. Если что-то определено в синглтоне), для вас нет дампа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...