Ruby Academy · Lección

Escritura del código

Organice una gema

Lección 2 de 413 pasos

Escritura del código es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 2 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.

Organizar el código de una gema

El código de una buena gema es fácil de leer, fácil de requerir y está organizado en un espacio de nombres para no entrar nunca en conflicto con otras bibliotecas. La herramienta clave es un módulo de nivel superior que lo envuelve todo.

  • Un módulo de espacio de nombres por gema.
  • Un archivo por clase, reflejando el espacio de nombres.
  • Una API pública pequeña.

El módulo de espacio de nombres

Envuelva todas las clases en un módulo cuyo nombre coincida con el de su gema. Esto evita que su Client entre en conflicto con el Client de otra persona.

module Greeter
  class Hello
    def message
      "Hi there"
    end
  end
end

puts Greeter::Hello.new.message

Convención de nombres de archivos

Las herramientas de Ruby esperan que las rutas de archivo coincidan con los nombres de las constantes:

  • Greeter se encuentra en lib/greeter.rb.
  • Greeter::Hello se encuentra en lib/greeter/hello.rb.

Esta convención permite que los aut cargadores encuentren los archivos automáticamente.

Requerir archivos internos

El archivo de entrada conecta todo mediante require_relative. Cada archivo de clase se requiere una vez, de modo que toda la biblioteca se carga con un solo require 'greeter'.

Una API pública clara

Exponga un conjunto pequeño de métodos que los usuarios realmente llamen. Un patrón habitual consiste en usar métodos de conveniencia a nivel de módulo que deleguen en clases internas.

module Greeter
  def self.say(name)
    "Hello, " + name + "!"
  end
end

puts Greeter.say("Ada")

Ocultar los elementos internos

Marque los métodos auxiliares como private para que no formen parte de su contrato público. Todo lo que es público constituye una promesa para los usuarios; mantenga esa superficie deliberada y pequeña.

class Calculator
  def total(a, b)
    add(a, b)
  end

  private

  def add(x, y)
    x + y
  end
end

puts Calculator.new.total(2, 3)

Patrón de configuración

Muchas gemas ofrecen un bloque de configuración para que los usuarios establezcan las opciones una sola vez. Una versión sencilla almacena los ajustes en un objeto de configuración.

module App
  class Config
    attr_accessor :api_key
  end

  def self.config
    @config ||= Config.new
  end

  def self.configure
    yield(config)
  end
end

App.configure { |c| c.api_key = "secret" }
puts App.config.api_key

Errores personalizados

Defina clases de error específicas de la gema dentro de su espacio de nombres para que los usuarios puedan capturar exactamente sus errores. Herede de StandardError.

module Payment
  class Error < StandardError; end
  class DeclinedError < Error; end
end

begin
  raise Payment::DeclinedError, "card declined"
rescue Payment::Error => e
  puts "Handled: " + e.message
end

Evitar el monkey patching

Evite modificar globalmente clases principales como String. Esto provoca comportamientos inesperados en otros códigos. Si debe ampliar una clase, use refinements para limitar el cambio, o añada métodos auxiliares en sus propias clases.

Mantener pocas dependencias

Cada dependencia de ejecución que añade se convierte en una dependencia para todos sus usuarios. Siempre que sea razonable, prefiera la biblioteca estándar y añada una gema solo cuando justifique su inclusión.

Menos dependencias significan menos conflictos de versiones e instalaciones más rápidas.

Documentar la API pública

Añada comentarios que describan los argumentos y el valor de retorno de cada método público. Herramientas como YARD convierten estos comentarios en documentación navegable, y un buen README con ejemplos suele ser decisivo para que las personas adopten su gema.

Comprobación rápida

Compruebe su comprensión de la organización del código de una gema.

Resumen: escribir el código

Ha aprendido a organizar los elementos internos de una gema:

  • Envuelva todo en un módulo de espacio de nombres.
  • Haga coincidir las rutas de archivo con los nombres de las constantes.
  • Mantenga una API pública pequeña y marque los métodos auxiliares como private.
  • Defina clases de error personalizadas y evite el monkey patching global.
  • Mantenga pocas dependencias y documente la API.

A continuación, añadiremos pruebas y versionado.

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 «Escritura del código» es gratis?

Sí — el texto completo de «Escritura del código» 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 «Escritura del código»?

Organice una gema 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 2 de 4.

¿Cuánto tiempo toma la lección «Escritura del código»?

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