Подтвердить что ты не робот

Лучший способ для версии приложения для рельсов?

Каким будет лучший вариант для версии приложения rails? Мы хотим начать работать с более структурированными циклами тестирования, а также иметь установленную версию для каждой сборки. Мы используем subversion, но я бы хотел избежать использования номеров версий для версий. Есть ли простой способ сделать это автоматически? Или я должен просто определить метод app_version в помощнике приложения?

(Мы используем подрывную функцию для управления источником)

4b9b3361

Ответ 1

Вы можете использовать ключевые слова subversion:

По существу, у вас может быть вспомогательный метод...

def app_version
    "$Id$"
end

$Id$ - это ключевое слово, которое svn будет расширяться (ссылка выше содержит другие, которые вы могли бы использовать). Теперь мы устанавливаем свойство keywords в этом файле, чтобы svn знал, что он должен заменять ключевые слова (допустим application_helper.rb):

svn propset svn:keywords "Id" application_helper.rb
svn ci application_helper.rb

Теперь, если вы посмотрите на application_helper.rb, он будет читать (что-то вроде этого, с измененной версией, датой, именем пользователя)

def app_version
    "$Id: application_helper.rb 282 2009-06-26 10:34:17Z root $"
end

Очевидно, вы можете назначить эту переменную и проанализировать ее в нужном формате, включить ее в свои шаблоны просмотра и т.д. Или сделать то же самое, но вместо application_helper.rb просто использовать файл с именем VERSION в своем корневой каталог.

Ответ 2

Если вы используете git, вы можете создать статическую переменную в вашем файле environment.rb, который вытаскивает текущее имя тега из git. Если вы используете что-то вроде git flow, это отлично работает.

Добавить в environment.rb:

APP_VERSION = `git describe --always` unless defined? APP_VERSION

Теперь вы можете <%= APP_VERSION %> в своих представлениях. Нотабене что это не работает на Героку.

Источник: http://blog.danielpietzsch.com/post/1209091430/show-the-version-number-of-your-rails-app-using-git

Ответ 3

Плагин app-version (http://github.com/toland/app_version/tree/master) позволяет указать различные компоненты версии приложения. Затем вы можете включить ревизию subversion в качестве компонента сборки без ее доминирующей части.

Вы также можете, как часть рабочего процесса сборки/тестирования, увеличить еще один компонент версии.

Ответ 4

Вы можете либо с помощью маркировки вашей ветки git/svn... или, наилучшим образом, константы в файле среды, как это делает Rails:

MY_APP_VER = 0.1

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

Ответ 5

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

def put_version
  "<p id='version'>#{$$TAG_NAME}</p>"
end

Невозможно запомнить синтаксис для вставки имени тега.