Spec-Zone.ru › Ruby on Rails 5.2

модуль 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} должен давать точно такие же результаты с активной поддержкой или без неё.

Публичные методы класса

gem_version() Показать исходный код
# File activesupport/lib/active_support/gem_version.rb, line 5
def self.gem_version
  Gem::Version.new VERSION::STRING
end

Возвращает версию текуще загруженного Active Support в виде Gem::Version.

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API