Spec-Zone.ru › Ruby on Rails 5.1

модуль 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 3
def self.gem_version
  Gem::Version.new VERSION::STRING
end

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

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.

Spec-Zone.ru

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