16

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

  • acts_as_versioned
  • simply_versioned
  • vestal_versions

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

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

+0

Вопросы, как это то, что рубин Toolbox был создан для: https: //www.ruby- toolbox.com/categories/Active_Record_Versioning. Поскольку этот вопрос возрастает, и драгоценные камни приходят и уходят, Ruby Toolbox останется хорошим ресурсом, чтобы показывать последовательные переходы, передовые альтернативы, популярность и обслуживание различных проектов. Все, что вам нужно, чтобы принять ваше решение! –

ответ

4

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

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

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

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

+0

Я взглянул на все решения (бумажный след, act_as_audited) и, наконец, решил пойти так же, как Lailson, - разработать еще один плагин для версий (sirlantis/history в github, работа продолжается). –

+0

Просто пояснить: я не создал библиотеку, я просто создаю собственное решение для своей проблемы. Но удачи с плагином. Я вижу, вы много делали очень быстро, с хорошей документацией. Это выглядит многообещающе ... Меня интересует этот вопрос, и я буду следить за вашим проектом. –

2

Пару месяцев назад я протестировал пару решений, и vestal_versions был самым эффективным. Существует также great screencast here от Райан Бейтс.

Если вы ищете другие альтернативы, зарегистрируйтесь The Ruby Toolbox list.

+0

Действительно, он кажется самым продвинутым. Возможно, я ошибаюсь в том, как он обрабатывает миграции, я сделаю некоторые тесты. И спасибо за ссылку Toolbox! –

2

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

Вы можете обнаружить, что в http://github.com/collectiveidea/acts_as_audited/

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

+0

Выглядит многообещающе - я посмотрю на него. –

21

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

http://github.com/airblade/paper_trail

Надеется, что это помогает!

+0

Спасибо за ваш ответ. Я тоже решил пойти с бумажным тропом. – Mosselman

0

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

+0

На самом деле, вместо «использования p4 и т. Д. INSTEAD базы данных», как насчет управления версиями/ветвлением базы данных с помощью p4 и т. Д., Когда сеанс Rails направляет управление версиями. Например, я хочу проверить модель v4.1, поэтому перед доступом к данным из базы данных я проверяю эту версию базы данных. Если я хочу разветвиться, я сначала выдаю команду ветвления, а затем продолжаю работать. Мысли? –

Смежные вопросы