Я керую компанією безперервної інтеграції , і ми запускаємо код наших клієнтів в Linux. Кожен раз, коли ми запускаємо код, ми запускаємо його в окремій віртуальній машині. Часта проблема, яка виникає, полягає в тому, що тести замовника іноді виходять з ладу через впорядкування каталогів свого коду, перевіреного на VM.
Дозвольте детальніше розібратися. У OSX файлова система HFS + забезпечує, щоб каталоги завжди проходили в одному порядку. Програмісти, які використовують OSX, припускають, що якщо він працює на їх машині, він повинен працювати всюди. Але це часто не працює в Linux, оскільки файлові системи Linux не надають гарантій замовлення під час проходження каталогів.
Як приклад, розглянемо, що є 2 файли, a.rb, b.rb. a.rb визначає MyObject
, а b.rb використовує MyObject
. Якщо a.rb завантажений спочатку, все буде працювати. Якщо b.rb завантажується спочатку, він спробує отримати доступ до невизначеної змінної MyObject
та не вдасться.
Але гірше, ніж це, - це не завжди просто не вдається. Оскільки замовлення файлової системи в Linux не впорядковане, це буде різний порядок на різних машинах. Це гірше, тому що іноді тести проходять, а іноді вони провалюються. Це найгірший можливий результат.
Отже, моє питання полягає в тому, чи є спосіб зробити замовлення файлової системи повторюваним. Можливо, якийсь прапор ext4, який говорить про те, що він завжди буде переходити в каталогах у певному порядку? Або, можливо, інша файлова система, яка має цю гарантію?