Rails 2.3.3: метод touch, быстрый JSON, работа над ошибками |
- Statistics
- Participants
- Translate into Russian
- Translation result
- Translation complete.
Мы выпустили Ruby on Rails версии 2.3.3. Этот релиз исправляет много ошибок и добавляет немного нового функционала.
Active Record
* touch -- удобный метод обновления временных меток (timestamp) записей и ничего другого. Он позаимствован из приложений чьи модели "касаются" других, когда они изменяются, такие как комментарий обновления parent.replies_changed_at временной метки после сохранения и удаления. Установка временных меток всех ассоциаций has_many позволяет легко построить ключ для кэширования фрагмента, который охватывает изменения в родительском объекте, но ни в одном из его потомков. Этот шаблон реализуется как belongs_to :parent, :touch => :replies_changed_at. Тогда как изменения потомков parent.replies_changed_at является косательным (touched). :touch => true является аналогом :touch => :updated_at.
* опция :primary_key метода belongs_to для расширенной поддержки наследования схем и использования особого UUID первичного ключа такого вида: belongs_to :employee, :primary_key => 'SSN', :foreign_key => 'EMPID'. Список исправлений: http://github.com/rails/rails/commit/b3ec7b2d03a52e43a4451d522eea7e6499289daa
JSON
* декодирование внутренних интерфейсов (backends) для json и yajl библиотек. Они значительно быстрее, чем внутренний интерфейс yaml используемый по умолчанию. Для начала, установите json из gem и установите ActiveSupport::JSON.backend = 'JSONGem'.
* упрощение пользовательской части кодирования API. Так как JSON библиотеки реализуют to_json с переменной совместимостью, безопасная перегрузка затруднительна. Большинство типичных to_json выглядят следующим образом
def to_json(*encoder_specific_args)
{ :some => "json representation" }.to_json(*encoder_specific_args)
end
поэтому мы "подсушили" (DRYed) пользовательскую часть API, сделав ее более естественной
def as_json(options = {})
{ :some => "json representation" }
end
без уродливых внутренних состояний уязвимых к перегрузке to_json как в публичной части, так и во внутреннем конструкторе API. Rails 3 разделит API явно, поэтому уже надо быть готовыми перейти сейчас с to_json на as_json.
Другие особенности
* добавление опции :concat, предписывающей вспомогательным тегам (tag helpers) производить принудительную конкатенацию. Список исправлений: http://github.com/rails/rails/commit/a491b19502781266b05918cf99b6ba67898e3be9
* восстановление обратной совместимости для AR::Base#to_xml. Список исправлений: http://github.com/rails/rails/commit/7bf9bf3dd6b4c4d78214917f0877536d222098bb
* переход с BlueCloth на Markdown для помощника markdown. Пользователи использующие BlueCloth для сохранения функциональности своего markdown должны обновиться до версии 1.0.1 или 2.0.5 с тем, чтобы восстановить совместимость.
Работа над ошибками
* Исправлены ошибки, вызванные перегрузкой класса и потоком ответов в режиме разработки.
* Несколько исправлений в процессе создания gem, распаковки и установки системы.
* Создан text_area_tag, который по-умолчанию экранирует содержимое.
* Создан filter_parameters, который работает корректно с массивом параметров.
* Thread-safety исправления для заключения строк PostrgreSQL в кавычки.
* Исправлено качество выполнения для ответов с крупными телами (bodies).
