Para tener funciones dentro de módulos, en Ruby, hace falta declarar las funciones como NombreModulo.nombre_funcion. Kind of like static/class methods.

Gross.

No he visto cómo cargar/poner en el namespace actual sólo ciertas funciones de un módulo.

Por otro lado, los import kind-of no ponen el directorio actual en el PATH del intérprete. require 'foo' no sirve, pero require './foo' sí.

Los bloques son formas prácticas de crear funciones anónimas, y pasar esas funciones a otras funciones. Diferencias respecto a Python:

  • Estas funciones anónimas pueden tener múltiples sentencias, a diferencia de lambda en Python.
  • Supongo que son el machete necesario para referirse a una función, en vez de llamarla. Como en Ruby hacer_algo llama a la función pasándole 0 argumentos, no hay forma sencilla de referirse a ella.
  • Los bloques permiten crear clausuras de verdad, en vez de tener una cosa de 3 pesos de sólo lectura.