2009-06-26 3 views
17

Quel serait le meilleur moyen de versionner une application de rails? Nous voulons commencer à nous lancer dans des cycles de test plus structurés et avoir une version définie par build en fait partie. Nous utilisons subversion mais je voudrais éviter d'utiliser des numéros de révision pour les versions. Y a-t-il un moyen facile de le faire automatiquement? Ou devrais-je simplement définir une méthode app_version dans l'application helper?Le meilleur moyen de version une application rails?

(Nous utilisons la subversion pour le contrôle de la source)

+0

Est-il un lien entre tout le numéro de version et la subversion? Par exemple, créez-vous un tag ou une branche pour chaque version? Si c'est le cas, vous pouvez utiliser ma solution ci-dessous avec le mot-clé $ URL $ qui, en fonction de votre schéma, sera développé en http: //mysubversionserver/tags/v3.0. Vous pouvez ensuite facilement analyser le "v3.0", par ex. version.split ('http: // mysubversionserver/tags /') [1] – ideasasylum

Répondre

4

Vous pouvez utiliser subversion keywords:

Essentiellement, vous pourriez avoir une méthode d'assistance ...

def app_version 
    "$Id$" 
end 

$Id$ est un mot-clé qui svn élargira (le lien ci-dessus a d'autres que vous pouvez utiliser). Maintenant, nous avons mis les mots-clés propriété sur ce fichier pour laisser svn savoir qu'il devrait remplacer les mots clés (supposons application_helper.rb):

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

Maintenant, si vous regardez application_helper.rb ça va lire (quelque chose comme ce, avec la version, la date, le nom d'utilisateur a changé)

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

de toute évidence, vous pouvez assigner à une variable et l'analyser au format requis, il inclus dans votre vue des modèles, etc. Ou faire la même chose, mais Au lieu de application_helper.rb, utilisez simplement un fichier appelé VERSION dans votre répertoire racine.

+0

Refusée. Je suis venu ici pour dire précisément ceci. – user60401

+0

$ 1 si "$ Revision $". Match (/ Révision: (d +) /) ... Si vous ajoutez "Révision" aux mots-clés svn: alors ceci sera mis à jour avec chaque révision SVN (pas seulement quand le fichier actuel est mis à jour) et il analysera seulement la révision. – nertzy

3

Le plugin app version (http://github.com/toland/app_version/tree/master) vous permet de spécifier différents composants d'une version de l'application. Vous pourriez alors inclure la révision de subversion en tant que composant de la construction sans qu'elle soit la partie dominante.

Vous pouvez également, dans le cadre de votre flux de production/test, incrémenter un autre composant de la version.

0

Je pense que cela devrait être la responsabilité de votre système de contrôle de source. J'utiliser une balise pour chaque version, vous pouvez créer une méthode d'assistance qui écrit simplement l'étiquette dans votre application (par exemple, dans le pied de page):

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

ne me souviens pas de la syntaxe pour insérer la nom du tag.

2

Vous pouvez soit la version en étiquetant votre branche git/svn ... ou, mieux, une constante dans le dossier de l'environnement, tout comme Rails fait:

MY_APP_VER = 0.1 

Pourquoi utiliseriez-vous l'aide de l'application? Vous pouvez toujours obtenir cette variable à partir de votre assistant d'application si vous devez l'afficher à l'écran. Mais, cela semble stupide d'avoir une logique appartenant à la configuration de l'ensemble de votre application dans une méthode d'aide.

21

Si vous utilisez git, vous pouvez créer une variable statique dans votre fichier environment.rb qui extrait le nom de tag actuel de git. Si vous utilisez quelque chose comme git flow, cela fonctionne très bien.

Ajouter à environment.rb:

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

Maintenant, vous pouvez <%= APP_VERSION %> dans votre point de vue. N.B. que cela ne marche pas sur Heroku.

Source: http://blog.danielpietzsch.com/post/1209091430/show-the-version-number-of-your-rails-app-using-git

+0

La définition dans environment.rb ne fonctionne pas dans Rails 2.3.14. Je suggère d'ajouter une aide à votre applications_helper.rb. Aussi, je préfère la sortie de 'git describe --always --tags'. Ensuite, vous obtenez les numéros de version. Mais ta réponse m'a amené là-bas. :) –