модуль ActiveSupport
Джем JSON добавляет несколько модулей к базовым классам Ruby, содержащим определение :to_json, перезаписывая их стандартное поведение. Тем не менее, нам нужно определить базовый метод to_json во всех из них, иначе они всегда будут использовать реализацию джема to_json, которая в некоторых случаях несовместима с предыдущими версиями (например, реализация JSON для Hash не работает) с наследованием, и, следовательно, классы, такие как ActiveSupport::OrderedHash, не могут быть сериализованы в json.
С другой стороны, мы должны избегать конфликтов с ::JSON.{generate,dump}(obj). К сожалению, кодировщик джема JSON полагается на собственную реализацию to_json для кодирования объектов. Поскольку он всегда передает объект ::JSON::State в качестве единственного аргумента методу to_json, мы можем обнаружить это и перенаправить вызовы к исходному методу to_json.
Следует отметить, что при прямом использовании ::JSON.{generate,dump}, кодировщик ActiveSupport полностью игнорируется. Это означает, что as_json не будет вызван, и джем JSON просто проигнорирует любые опции, которые он не понимает напрямую. Это также означает, что ::JSON.{generate,dump} должен давать точно такие же результаты с активной поддержкой или без неё.
Публичные методы класса
# File activesupport/lib/active_support/gem_version.rb, line 3 def self.gem_version Gem::Version.new VERSION::STRING end
Возвращает версию загруженного Active Support в виде Gem::Version.
# File activesupport/lib/active_support/version.rb, line 5 def self.version gem_version end
Возвращает версию загруженного ActiveSupport в виде Gem::Version.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.