Ruby Academy · Lección

Pruebas y versionado

Calidad y semver

Lección 3 de 413 pasos

Pruebas y versionado es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

¿Por qué probar una gema?

Como una gema se utiliza en muchos proyectos, un error afecta a todos. Las pruebas automatizadas le permiten cambiar el código con confianza y demostrar que la gema sigue funcionando.

  • Las pruebas documentan el comportamiento esperado.
  • Detectan regresiones antes de una versión.
  • Los usuarios serios las exigen antes de adoptar una gema.

Elegir un framework

Las dos opciones más populares son Minitest (incluido con Ruby y ligero) y RSpec (con un DSL completo y muy habitual). Cualquiera de los dos es adecuado; elija uno y añádalo como dependencia de desarrollo en el gemspec.

Un ejemplo con Minitest

Las pruebas de Minitest son clases normales con métodos de aserción. Este es un ejemplo autónomo que ejecuta la lógica de su gema y comprueba el resultado.

require "minitest/autorun"

def greet(name)
  "Hi, " + name
end

class GreetTest < Minitest::Test
  def test_greet
    assert_equal "Hi, Sam", greet("Sam")
  end
end

Aserciones habituales

Aserciones útiles de Minitest:

  • assert_equal expected, actual
  • assert obj y refute obj
  • assert_nil value
  • assert_raises(Error) { ... }

Cada prueba debe comprobar un comportamiento claro.

require "minitest/autorun"

class MathTest < Minitest::Test
  def test_addition
    assert_equal 4, 2 + 2
  end

  def test_truth
    refute_nil 5
  end
end

Ejecutar y automatizar pruebas

Normalmente se añade una tarea de Rake para que rake test ejecute todo el conjunto de pruebas. Después, la integración continua ejecuta la misma tarea en cada push y con varias versiones de Ruby para detectar los problemas a tiempo.

¿Qué es el versionado semántico?

El versionado semántico (semver) da significado a un número de versión MAJOR.MINOR.PATCH:

  • MAJOR: cambios incompatibles en la API.
  • MINOR: nuevas funciones compatibles con versiones anteriores.
  • PATCH: correcciones de errores compatibles con versiones anteriores.

Los usuarios dependen de esto para actualizarse de forma segura.

Leer una versión

Dada la versión 2.4.1: major es 2, minor es 4 y patch es 1. Dividir la cadena muestra sus partes.

version = "2.4.1"
major, minor, patch = version.split(".")
puts "Major: " + major
puts "Minor: " + minor
puts "Patch: " + patch

Cuándo incrementar cada parte

Reglas de decisión:

  • ¿Ha corregido un error sin cambiar la API? Incremente patch.
  • ¿Ha añadido una función y el código antiguo sigue funcionando? Incremente minor y restablezca patch a 0.
  • ¿Ha eliminado o cambiado un comportamiento existente? Incremente major y restablezca minor y patch a 0.
def bump_minor(version)
  major, minor, _patch = version.split(".").map(&:to_i)
  major.to_s + "." + (minor + 1).to_s + ".0"
end

puts bump_minor("1.3.5")

Restricciones de versión

Los usuarios fijan la versión de su gema mediante operadores en su Gemfile:

  • '~> 1.4' permite desde 1.4 hasta antes de 2.0 (restricción pesimista).
  • >= 1.4 permite cualquier versión posterior.
  • = 1.4.2 fija una versión exacta.

La restricción pesimista ~> es la más habitual, ya que equilibra las actualizaciones y la seguridad.

Mantener un registro de cambios

Mantenga un CHANGELOG.md que enumere los cambios de cada versión. Indica a los usuarios qué hay de nuevo, qué dejó de funcionar y cómo migrar. Acompañe cada incremento de versión con una entrada en el registro de cambios.

Versiones preliminares

Las versiones como 2.0.0.beta1 indican versiones preliminares inestables. Los usuarios deben aceptar explícitamente instalarlas, por lo que puede publicar versiones tempranas para realizar pruebas sin afectar a las instalaciones normales.

version = "2.0.0.beta1"
puts "Pre-release? " + version.include?("beta").to_s

Comprobación rápida

Compruebe su comprensión del versionado.

Resumen: pruebas y versionado

Ha aprendido a mantener una gema fiable:

  • Escriba pruebas con Minitest o RSpec; automatícelas con Rake y CI.
  • Siga semver: MAJOR.MINOR.PATCH.
  • Incremente la parte adecuada para correcciones, funciones o cambios incompatibles.
  • Use restricciones ~> y mantenga un registro de cambios.

A continuación, publicaremos la gema en RubyGems.

Gratis para empezar

Aprende Ruby con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
29
Lecciones
109

Preguntas frecuentes

¿La lección «Pruebas y versionado» es gratis?

Sí — el texto completo de «Pruebas y versionado» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Pruebas y versionado»?

Calidad y semver Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Pruebas y versionado»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Estructura de una gema
  2. Escritura del código
  3. Pruebas y versionado
  4. Publicación en RubyGems
← Volver a Ruby Academy