Cómo mostrar la versión de tu aplicación Rails usando Git (commit, fecha y rama)

🧩 Tutorial: Mostrar información del commit Git en tu aplicación Rails

🎯 Objetivo
Mostrar dinámicamente la versión del código en tu app Rails usando:

– Hash del último commit (`git rev-parse`)
– Fecha del commit
– Mensaje del commit
– Rama actual

Esto puede ser útil para depuración, monitoreo, o mostrar la versión desplegada.

✅ Paso 1: Verifica que Git esté disponible
Confirma que puedes usar Git desde la terminal del proyecto:

git rev-parse –short HEAD

También prueba:

git log -1 –format=%cd –date=iso
git rev-parse –abbrev-ref HEAD

✅ Paso 2: Crea el initializer version.rb
Crea el archivo `config/initializers/version.rb`:

touch config/initializers/version.rb

Y dentro coloca lo siguiente:

“`ruby
COMMIT_INFO = begin
{
hash: `git rev-parse –short HEAD`.strip,
date: `git log -1 –format=%cd –date=iso`.strip,
message: `git log -1 –pretty=%s`.strip,
branch: `git rev-parse –abbrev-ref HEAD`.strip
}
rescue => e
Rails.logger.warn “No se pudo obtener información de Git: #{e.message}”
{
hash: “desconocido”,
date: “sin fecha”,
message: “sin mensaje”,
branch: “sin rama”
}
end
“`

✅ Paso 3: Mostrarlo en la interfaz
En cualquier archivo `.erb`, como en tu layout o pie de página (`app/views/layouts/application.html.erb`):

“`erb

Versión: <%= COMMIT_INFO[:hash] %>
Rama: <%= COMMIT_INFO[:branch] %>
Fecha: <%= COMMIT_INFO[:date] %>
Mensaje: <%= COMMIT_INFO[:message] %>

“`

✅ Paso 4: Reinicia el servidor
Cada vez que arranques el servidor, Rails ejecutará el initializer y leerá los datos directamente desde Git:

rails s
# o con hot reload
bin/dev

✅ (Opcional) Ver en consola Rails
Puedes ejecutar:

rails console
puts COMMIT_INFO

Resultado esperado:

{
:hash=>”3f7a2d1″,
:date=>”2025-06-17 14:33:00 -0600″,
:message=>”Corrige validación de datos”,
:branch=>”main”
}

✅ (Opcional avanzado) Crear endpoint /version
Para consultar estos datos en un JSON público:

1. Abre `config/routes.rb` y agrega:

“`ruby
get ‘/version’, to: proc {
[200, { ‘Content-Type’ => ‘application/json’ }, [COMMIT_INFO.to_json]]
}
“`

2. Visita: http://localhost:3000/version

⚠️ Consideraciones

– Este enfoque **funciona solo si `.git/` está presente** y el ejecutable `git` está disponible.
– En **producción**, muchos sistemas de CI eliminan `.git/`. En ese caso te conviene generar un archivo con la info al hacer deploy. Pide ayuda si deseas esa variante.

🎉 Resultado final en tu app

Versión: 3f7a2d1
Rama: main
Fecha: 2025-06-17 14:33:00 -0600
Mensaje: Corrige validación de datos

Leave a Reply

Your email address will not be published. Required fields are marked *