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

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

Это - Java, но порт к C# тривиален:

public class NumberUtil {
  final static String[] ORDINAL_SUFFIXES = {
    "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"
  };

  public static String ordinalSuffix(int value) {
    int n = Math.abs(value);
    int lastTwoDigits = n % 100;
    int lastDigit = n % 10;
    int index = (lastTwoDigits >= 11 && lastTwoDigits <= 13) ? 0 : lastDigit;
    return ORDINAL_SUFFIXES[index];
  }

  public static String toOrdinal(int n) {
    return new StringBuffer().append(n).append(ordinalSuffix(n)).toString();
  }
}

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

16
задан Marcel Jackwerth 8 November 2009 в 18:34
поделиться

4 ответа

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

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

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

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

4
ответ дан 30 November 2019 в 17:52
поделиться

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

http://github.com/airblade/paper_trail

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

21
ответ дан 30 November 2019 в 17:52
поделиться

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

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

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

2
ответ дан 30 November 2019 в 17:52
поделиться

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

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

2
ответ дан 30 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: