Dirijo una empresa de integración continua alojada y ejecutamos el código de nuestros clientes en Linux. Cada vez que ejecutamos el código, lo ejecutamos en una máquina virtual separada. Un problema frecuente que surge es que las pruebas de un cliente a veces fallarán debido al pedido del directorio de su código desprotegido en la VM.
Déjame entrar en más detalles. En OSX, el sistema de archivos HFS + garantiza que los directorios se recorran siempre en el mismo orden. Los programadores que usan OSX asumen que si funciona en su máquina, debe funcionar en todas partes. Pero a menudo no funciona en Linux, porque los sistemas de archivos de Linux no ofrecen garantías de pedido al recorrer directorios.
Como ejemplo, considere que hay 2 archivos, a.rb, b.rb. a.rb define MyObject
, y b.rb usa MyObject
. Si a.rb se carga primero, todo funcionará. Si b.rb se carga primero, intentará acceder a una variable indefinida MyObject
y fallará.
Pero peor que esto, es que no siempre falla. Debido a que el sistema de archivos que ordena en Linux no está ordenado, será un orden diferente en diferentes máquinas. Esto es peor porque a veces las pruebas pasan y otras fallan. Este es el peor resultado posible.
Entonces mi pregunta es, ¿hay alguna manera de hacer que el pedido del sistema de archivos sea repetible? ¿Alguna bandera a ext4 quizás, que dice que siempre atravesará directorios en algún orden? ¿O tal vez un sistema de archivos diferente que tenga esta garantía?