🧩 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
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