модуль 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 5 def self.gem_version Gem::Version.new VERSION::STRING end
Возвращает версию текуще загруженного Active Support в виде Gem::Version.
# File activesupport/lib/active_support/version.rb, line 7 def self.version gem_version end
Возвращает версию текуще загруженного ActiveSupport в виде Gem::Version.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.