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

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

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

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

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


person Marcel Jackwerth    schedule 08.11.2009    source источник


Ответы (6)


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

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

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

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

person Lailson Bandeira    schedule 08.11.2009
comment
Я просмотрел все решения (бумажный след, act_as_audited) и, наконец, решил пойти тем же путем, что и Лейлсон, — разработать еще один плагин для управления версиями (sirlantis/исторический на github, работа в процессе). - person Marcel Jackwerth; 10.11.2009
comment
Просто поясню: я не собирал библиотеку, я просто делаю собственное решение для своей проблемы. Но удачи с плагином. Я вижу, вы сделали много вещей очень быстро, с хорошей документацией. Выглядит многообещающе… Меня это интересует, и я буду продолжать следить за вашим проектом. - person Lailson Bandeira; 10.11.2009

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

http://github.com/airblade/paper_trail

Надеюсь это поможет!

person Ryan    schedule 09.11.2009
comment
Спасибо за Ваш ответ. Я также решил пойти с бумажным следом. - person Mosselman; 08.11.2011

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

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

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

person tal    schedule 08.11.2009
comment
Выглядит многообещающе - посмотрю. - person Marcel Jackwerth; 09.11.2009

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

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

person Simone Carletti    schedule 08.11.2009
comment
Действительно, он кажется самым продвинутым. Может быть, я ошибаюсь в том, как он обрабатывает миграции, я проведу несколько тестов. И спасибо за ссылку на панель инструментов! - person Marcel Jackwerth; 09.11.2009

Другой плагин — paper_trail. Вот ссылка на рельсовые трансляции, опубликованные сегодня:

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

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

person user496437    schedule 28.02.2011

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

person Chuck Han    schedule 21.01.2011
comment
На самом деле, вместо использования p4 и т. д. ВМЕСТО базы данных, как насчет управления версиями/ветвления базы данных с использованием p4 и т. д., если сеанс Rails управляет управлением версиями. Например, я хочу проверить модель v4.1, поэтому перед доступом к данным из базы данных я извлекаю эту версию базы данных. Если я хочу ветвление, я сначала запускаю команду ветвления, а затем продолжаю работать. Мысли? - person Chuck Han; 21.01.2011