Управление версиями моделей в Ruby on Rails

Я ищу плагин/акт, чтобы разрешить версий своих моделей. Трудно найти список доступных решений. Пока я собирал:

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

последние два решения требуют только одной таблицы версий - это звучит неплохо, но у меня плохое предчувствие о том, как на легкость миграции повлияет это (потому что они сериализуют состояния как строка.)

С другой стороны, acts_as_versioned немного пыльный (последний коммит в январе). Есть ли какой-либо недавний опыт с любым из них? Или другие решения (или вилки), которые я мог пропустить?

6 ответов


Я работал с vestal_versions на прошлой неделе, и да, это самые передовые альтернативы, по крайней мере с точки зрения пространства: вы храните только то, что вам действительно нужно. Это активный проект и версия 1.0 будет большое обновление с множеством новых функций, просто посмотрите на ветку 1.0, чтобы знать, что я имею в виду.

но поиграв с ним немного, я заметил большой недостаток: производительность. Каждый раз, когда вам нужна конкретная версия, вы должны пройти все промежуточные, реконструируя версия вам нужна. Это также означает, что вы не можете редактировать или удалять версию напрямую, потому что она может возиться с модификациями, разбивая цепочку. Для этого вам нужно обработать версии адекватно, что vestal_versions в настоящее время не делает.

таким образом, для проблемы, которую я имел, я закончил с моим собственным решением для управления версиями. Мне нужна была производительность и возможность быстро удалять и редактировать версии, поэтому я пожертвовал хранилищем и разработал что-то похожее на act_as_versioned.

но, если вы не нужно это и не нужно возвращаться очень часто, я настоятельно рекомендую vestal_versions. Это продвинутое, твердое решение и активное, со страстным разработчиком за ним.


Я работал с драгоценным камнем под названием "paper_trail". Кажется, это лучшее решение в интернете на данный момент. Он имеет аудит и контроль версий в одном.

http://github.com/airblade/paper_trail

надеюсь, что это помогает!


мы использовали acts_as_audited в проекте, с довольно хорошим успехом.

вы можете найти это в http://github.com/collectiveidea/acts_as_audited/

(последний коммит в ноябре :-) )


пару месяцев назад я протестировал пару решений и vestal_versions был наиболее эффективным. Есть также большой скринкаст здесь от Райана Бейтса.

Если вы ищете другие альтернативы, проверить список инструментов Ruby.


другой плагин-paper_trail. Вот ссылка на опубликованные сегодня railscasts:

http://railscasts.com/episodes/255-undo-with-paper-trail

Он также упоминает, почему он предпочитает paper_trail vestal_versions


Эй, мне интересно, думал ли кто-нибудь об использовании Perforce, GitHub и т. д. на бэкэнде вместо базы данных как способ поддержки управления версиями? Так что, по сути, это будет файловый поиск данных, я думаю...