Лучший способ версии приложения rails? [закрытый]
Что было бы лучшим способом для версии приложения rails? Мы хотим начать входить в более структурированные циклы тестирования, и наличие установленной версии для каждой сборки является частью этого. Мы используем subversion, но я хотел бы избежать использования номеров версий для версий. Существует ли простой способ сделать это автоматически? Или я должен просто определить метод app_version в помощнике приложения?
(мы используем subversion для управления версиями)
5 ответов
можно использовать 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.РБ это будет читать (что-то вроде этого, с версии, дата, имя пользователя изменено)
def app_version
"$Id: application_helper.rb 282 2009-06-26 10:34:17Z root $"
end
очевидно, вы можете назначить это переменной и проанализировать ее в требуемом формате, включить ее в шаблоны представлений и т. д. Или делать то же самое, но вместо application_helper.rb, просто используйте файл с именем VERSION
в корневом каталоге.
если вы используете git
, вы можете создать статическую переменную в ваш environment.rb
файл, который извлекает текущее имя тега из git. Если вы используете что-то вроде git flow, это прекрасно работает.
добавить environment.rb
:
APP_VERSION = `git describe --always` unless defined? APP_VERSION
теперь вы можете <%= APP_VERSION %>
в ваши взгляды. Н. Б. Что это не работает на Heroku.
источник: http://blog.danielpietzsch.com/post/1209091430/show-the-version-number-of-your-rails-app-using-git
плагин app-version (http://github.com/toland/app_version/tree/master) позволяет указать различные компоненты версии приложения. Затем вы можете включить ревизию subversion в качестве компонента сборки, не будучи доминирующей частью.
вы также можете, как часть вашего рабочего процесса сборки/тестирования, увеличить другой компонент версии.
вы можете любую версию, обозначив свою ветвь git / svn ... или, лучше всего, константа в файле среды, как и Rails:
MY_APP_VER = 0.1
почему вы используете помощник приложения? Вы всегда можете получить эту переменную из своего помощника приложения, Если вам нужно отобразить ее на экране. Но это кажется глупым, чтобы иметь логику, принадлежащую конфигурации всего вашего приложения внутри вспомогательного метода.
Я думаю, что это должно быть ответственностью вашей системы управления версиями. Я бы использовал тег для каждой версии, затем вы можете создать вспомогательный метод, который просто записывает тег в вашем приложении (скажем, в нижнем колонтитуле):
def put_version
"<p id='version'>#{$$TAG_NAME}</p>"
end
Не могу вспомнить синтаксис для вставки имени тега.