2009-06-26 16 views
17

Jaki byłby najlepszy sposób na wersję aplikacji szyn? Chcemy zacząć przechodzić w bardziej uporządkowane cykle testowania, a posiadanie zestawu wersji na kompilację jest tego częścią. Używamy subversion, ale chciałbym uniknąć używania numerów wersji dla wersji. Czy jest to prosty sposób, aby zrobić to automatycznie? A może powinienem zdefiniować metodę app_version w pomocniku aplikacji?Najlepszy sposób na wersję aplikacji szyn?

(Używamy Subversion dla kontroli źródła)

+0

Czy istnieje jakiś związek w ogóle pomiędzy numerem wersji i dywersji? Na przykład, czy tworzysz tag lub gałąź dla każdej wersji? Jeśli tak, możesz użyć poniższego rozwiązania ze słowem kluczowym $ URL $, które w zależności od twojego schematu rozwinie się do http: //mysubversionserver/tags/v3.0. Następnie można łatwo przeanalizować "v3.0", np. version.split ('http: // mysubversionserver/tags /') [1] – ideasasylum

Odpowiedz

4

Można użyć subversion keywords:

Zasadniczo można mieć metody pomocnika ...

def app_version 
    "$Id$" 
end 

$Id$ jest słowem kluczowym, które będą rozwijać svn (link powyżej ma innych można używać). Teraz możemy ustawić właściwość słowa kluczowe na tym pliku svn niech wie, że powinien on być zastąpienie słów kluczowych (załóżmy application_helper.rb):

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

Teraz, jeśli spojrzeć na application_helper.rb to będzie czytać (coś podobnego to, ze wersja, data, nazwa użytkownika zmieniony)

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

Oczywiście, można przypisać to do zmiennej i analizować je do wymaganego formatu, zawiera go w widoku szablonów itp Albo zrobić to samo, ale zamiast application_helper.rb, po prostu użyj pliku o nazwie VERSION w katalogu głównym.

+0

Rewizja. Przyszedłem tutaj, żeby powiedzieć to dokładnie. – user60401

+0

1 $, jeśli "$ Rewizja $". Dopasowanie (/ Wersja: (\ d +) /) ... Jeśli dodasz "Przegląd" do słów kluczowych svn: to zostanie zaktualizowane przy każdej zmianie SVN (nie tylko wtedy, gdy bieżący plik zostanie zaktualizowany) i przeanalizuje tylko wersję. – nertzy

3

Wtyczka app-wersja (http://github.com/toland/app_version/tree/master) pozwala na określenie różnych komponentów wersji aplikacji. Następnie można uwzględnić wersję subversion jako składnik kompilacji, nie będąc częścią dominującą.

Możesz także, w ramach swojego procesu budowania/testowania, zwiększyć inkrement wersji.

0

Myślę, że to powinien być twój system kontroli źródła. Chciałbym użyć znacznik dla każdej wersji, a następnie można utworzyć metody pomocnika, który właśnie pisze tag w swojej aplikacji (powiedzmy, w stopce):

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

nie pamiętam składni do wkładania Nazwa znacznika.

2

Mogłeś też wersja przez znakowanie swój git/svn oddział ... lub najlepszy sposób, stała się w pliku środowiska, podobnie jak Rails robi:

MY_APP_VER = 0.1 

Dlaczego należy użyć pomocnika aplikacji? Zawsze możesz uzyskać tę zmienną ze swojego pomocnika aplikacji, jeśli chcesz ją wyświetlić na ekranie. Ale wydaje się to niemądre, aby logika należała do konfiguracji całej aplikacji w ramach metody pomocniczej.

21

Jeśli używasz git, możesz utworzyć zmienną statyczną w pliku environment.rb, która pobiera aktualną nazwę tagu z git. Jeśli używasz czegoś takiego jak git flow, działa to świetnie.

Dodaj do environment.rb:

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

Teraz możesz <%= APP_VERSION %> w widokach. N.B. że to nie działa na Heroku.

Źródło: http://blog.danielpietzsch.com/post/1209091430/show-the-version-number-of-your-rails-app-using-git

+0

Definiowanie go w environment.rb nie działa w Railsach 2.3.14. Sugeruję dodanie pomocnika do twoich aplikacji_helper.rb. Również wolę wyjście z 'git description --always --tags'. Otrzymasz numery wersji. Ale twoja odpowiedź mnie tam dopadła. :) –

Powiązane problemy