2009-06-26 11 views
17

¿Cuál sería la mejor forma de versionar una aplicación de rieles? Queremos comenzar a entrar en ciclos de prueba más estructurados y tener una versión establecida por compilación es parte de eso. Usamos subversión, pero me gustaría evitar el uso de números de revisión para las versiones. ¿Hay una manera fácil de hacer esto automáticamente? ¿O debería simplemente definir un método app_version en el helper de la aplicación?¿La mejor manera de versionar una aplicación de rieles?

(Estamos utilizando la subversión de control de código fuente)

+0

¿Hay alguna conexión alguna entre el número de versión y la subversión? Por ejemplo, ¿creas una etiqueta o una rama para cada versión? De ser así, puede usar mi solución a continuación con la palabra clave $ URL $ que, según su esquema, se expandirá a http: //mysubversionserver/tags/v3.0. A continuación, puede analizar fácilmente el "v3.0", por ejemplo, version.split ('http: // mysubversionserver/tags /') [1] – ideasasylum

Respuesta

4

Puede utilizar subversion keywords:

Esencialmente, usted podría tener un método de ayuda ...

def app_version 
    "$Id$" 
end 

$Id$ es una palabra clave que se ampliará SVN (el enlace anterior tiene otros que podría utilizar). Ahora, fijamos la propiedad palabras clave en ese archivo para que SVN saben que hay que sustituye a las palabras clave (vamos a suponer application_helper.rb):

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

Ahora bien, si nos fijamos en application_helper.rb que va a leer (algo así como esto, con la versión, fecha, nombre de usuario ha cambiado)

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

Obviamente, podría asignar a un variable y analizarlo al formato requerido, lo incluyó en sus plantillas de vista etc. O hacer lo mismo, pero en lugar de application_helper.rb, simplemente use un archivo llamado VERSION en su directorio raíz.

+0

Upvoted. Vine aquí para decir precisamente esto. – user60401

+0

$ 1 si coincide con "$ Revision $". (/ Revisión: (\ d +) /) ... Si agrega "Revisión" a las palabras clave svn, esto se actualizará con cada revisión SVN (no solo cuando el archivo actual se actualiza) y analizará solo la revisión. – nertzy

3

El plug-in-versión aplicación (http://github.com/toland/app_version/tree/master) le permite especificar diversos componentes de una versión de la aplicación. Luego podría incluir la revisión de subversión como un componente de la construcción sin que sea la parte dominante.

También podría, como parte de su flujo de trabajo de compilación/prueba, incrementar otro componente de la versión.

0

Creo que esto debería ser responsabilidad de su sistema de control de fuente. Que haría uso de una etiqueta para cada versión, a continuación, puede crear un método de ayuda que simplemente escribe la etiqueta en su aplicación (por ejemplo, en el pie de página):

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

No puedo recordar la sintaxis para insertar el nombre de la etiqueta

2

Se podría cualquiera de las versiones mediante el etiquetado de su rama git/SVN ... o, mejor manera, una constante en el archivo de entorno, al igual que lo hace Rieles:

MY_APP_VER = 0.1 

¿Por qué utilizar el ayudante aplicación? Siempre puede acceder a esa variable desde su aplicación auxiliar si necesita mostrarla en pantalla. Pero parece una tontería tener lógica que pertenezca a la configuración de toda su aplicación dentro de un método de ayuda.

21

Si usa git, puede crear una variable estática en su archivo environment.rb que extraiga el nombre de etiqueta actual de git. Si está usando algo como git flow, esto funciona genial.

Añadir a environment.rb:

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

Ahora usted puede <%= APP_VERSION %> en sus puntos de vista. nótese bien que esto no funciona en Heroku.

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

+0

Definirlo en environment.rb no funciona en Rails 2.3.14. Sugiero agregar un ayudante a su applications_helper.rb. Además, prefiero la salida de 'git describe --always --tags'. Luego obtienes los números de versión. Pero tu respuesta me llevó allí. :) –

Cuestiones relacionadas