Enlaces Ruby – Mayo 2021

Publicado el 1 de junio de 2021

RubyColección de los enlaces interesantes sobre Ruby que encontré durante el mes de mayo:

Noticias sobre el lenguaje y programación Ruby general:

💎 Ya he compartido varios enlaces sobre Ractors en Ruby 3, pero otra característica nueva es la clase Fiber::SchedulerInterface. Nos permite escribir schedulers más avanzados basados en bucles de eventos para entrada y salida sin bloquear en Ruby (a lo frameworks como EventMachine). Recientemente resurgió un artículo muy bueno sobre el tema Ruby 3.0 and the new FiberScheduler interface. Mientras leía esto me colgué a probar cosas y tengo algunas ideas para implementar más cosas, tengo investigación por delante…

💎 Ruby 3.1 agrega Array.intersect? que dados 2 arrays x e y, nos permite reemplazar x.intersection(y).empty? con x.intersect?(y). Podemos leer más en este post de BigBinary, parte de su serie de posts con cosas nuevas en Ruby 3.1.

📨 En Turbocharge HTTP Requests in Ruby, Dmitry Ishkov explica cómo mejorar los pedidos HTTP desde Ruby aprovechando la característica keep-alive de HTTP.

💎🧑‍🚀 El jueves 27 de mayo se realizó un nuevo meetup de Ruby Galaxy: el meetup virtual de Ruby. Podemos ver el video en este enlace de Twitch. La primera charla fue “Rails for Self-Care” por Ben Greenberg y además de hablar sobre cómo cuidarnos en estos tiempos tan difíciles, mostró un proyecto Rails muy divertido que desarrolló como forma de hacer el bien con código. La segunda charla a cargo de Kirk Haines estaba titulada “Ruby Ractors”. Pero se extendió a mucho más que eso repasando concurrencia, paralelismo, Fibers, Ractors, hilos, hasta buena parte de la historia de Ruby en sí. Así que recomiendo muchísimo mirar el video. Kirk estuvo encargado de mantener Ruby 1.8 por mucho tiempo, así que tiene un conocimiento muy amplio del lenguaje.

💎 Aaron tenderlove Patterson publicó un Pull Request a YAML (Psych) en Ruby: Psych.load no es seguro, sobretodo cuando se trata de datos no confiables, lo que hace que Psych.load o YAML.load sean susceptibles a una falla de Ejecución de Código Remoto (Remoto Code Execution – RCE). Su Pull Request cambia el método load por defecto por safe_load con un alias, y cambia el nombre del método viejo a unsafe_load. Al ser un cambio importante en el comportamiento, va a ser parte de la próxima versión mayor de la biblioteca.

💎 Por medio de Twitter, tenderlove también difundió el programa de recompensas Internet Bug Bounty en el que tanto Ruby como Rails pagan por encontrar problemas de seguridad.

💎 Uno de los desarrolladores de Ruby, Koichi Sasada, actualizó el debugger del lenguaje ruby/debug. El reemplazo del tradicional lib/debug.rb tiene varias ventajas entre las que lista más velocidad, debugging remoto (socket de dominio UNIX, TCP/IP), extensible y está trabajando en soportar hilos y Racros, entre otros. Lo probé cuando lo descubrí y ya funciona bien para debugging normal, pero le voy a dedicar un poco más de tiempo en otro momento. Podemos leer más al respecto en su README y ver instrucciones sobre cómo instalarlo y usarlo.

📼 En posts anteriores he mencionado a Jemma Issroff y su trabajo con Ruby. El mes pasado dio una charla en el Ruby Meetup de Berlín, y el video está subido a YouTube. La charla se llama “A Day in the Life of a Ruby Object” y explica detalles sobre el Garbage Collector, el uso de memoria instanciando objetos, herramientas que podemos usar para analizar la memoria y más.

Gemas y bibliotecas

🤖 Disponible nueva versión de Rubocop, 1.15 con muchos bugs corregidos y algunas mejoras.

🤖 Previamente se publicó Rubocop v1.14. Además de muchos arreglos de bugs, incluye dos cops nuevos:

  • Bundler/GemVersion: Fuerza a que la versión de las dependencias sean o bien requeridas o estén prohibidas
  • Layout/SingleLineBlockChain: Revisa si las llamadas a métodos están encadenadas en una sola línea de bloques. Considera que un salto de línea antes del punto mejora la legibilidad del código.

También incluye soporte experimental para Ruby 3.1 como versión destino del código.

💎 En su serie de tips “One Ruby Thing”, Andy Croll nos cuenta cómo optar por deshabilitar el rastreo FLoC en Rails. Nos recuerda que Google es una megacorporación distópica monopólica que utiliza su dominio del mercado para enriquecer su monopolio de la publicidad online y que debemos hacer lo posible para no alimentar a la bestia. Como siempre, recomiendo pasarse a un navegador web más ético como Firefox en vez de Google Chrome.

🛤️ El incidente que hubo en Basecamp desencadenó en mucha charla y controversia, particularmente con Rails y su futuro. Richard Schneeman, una de las tantas personas que ha contribuido mucho a Rails, escribió un artículo explicando cómo funciona el desarrollo de Rails desde su punto de vista, y observa varias ideas al respecto: The room where it happens: How Rails gets made.

🛤 Relacionado a este mismo lío con Basecamp y la forma terrible en que se gestionó la situación, Rails publicó un artículo donde aclaran cómo se gobierna el proyecto. Era necesario para calmar en parte a quienes sin haber colaborado con una línea de código a Rails ya estaban “pidiendo fork”. El equipo central de Rails cuenta con 11 personas, de las cuales 2 trabajan en Basecamp. Lo más importante relacionado al tema es: Hay un proceso de consenso y nadie en el equipo central, o sus empleadores, tiene control único sobre el framework o la comunidad. No hay un individuo o sub grupo de individuos que tengan el poder de ejecutar políticas unilateralmente en los espacios de la comunidad Rails que operan. Así que a calmarnos que usar Rails no implica que estemos de acuerdo ni aprobemos lo que hace o dice su creador…

💎 La gema pygments.rb envuelve el resaltador de sintaxis de Python Pygments. Cada proceso Ruby que se ejecute contiene su propio Pyton (que necesitamos tener instalado en el sistema).

💎 Steven Baker, creador de RSpec, publicó un post con su origen y buena parte de la historia de la famosa biblioteca de testing de Ruby que influyó tantos otros lenguajes y plataformas de testing. Lectura recomendada: History of RSpec.

💎 Leyendo Emacs News me enteré de RBS mode, un modo de Emacs para editar RBS (el lenguaje para definir tipos de Ruby). Tengo que probar este nuevo sistema de tipados… ¡algún día tendré tiempo!

Eventos

💎 El 8 de julio de 2021 se realiza la primera conferencia sobre el lenguaje de programación Crystal. En un tweet, se anunció que Matz va a estar dando una charla en la conferencia. “Crystal se para en los hombros de muchos gigantes, y Ruby es uno de los más altos”. Podemos comprar la entrada en este enlace.

🎤 EMEA on Rails es un meetup de meetups con el objetivo de unir distintos meetups de Ruby/Rails en la zona horaria de Europa, el Medio Oriente y África. El próximo encuentro (virtual obviamente) es el 9 de junio. Podemos entrar a su sitio web para ver más o seguirles en Twitter para mantenerlos al tanto de más novedades. Por ahora hay meetups registrados de Austria, Escocia, Inglaterra, Israel, Suiza, Alemania y más.

No hay comentarios en este post

Feed de comentarios

Dejar un comentario

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.

Toasty!