Могу ли я заменить исполняемый файл (доступ к которому осуществляется через вызов system
из ruby) на исполняемый файл, который ожидает определенный ввод и выдает ожидаемый вывод в согласованное количество времени? Я в основном работаю на Mac OSX 10.6 (Snow Leopard), но у меня также есть доступ к Linux и Windows. Я использую MRI ruby 1.8.7.
Справочная информация : Я смотрю на несколько выравниваний последовательности ДНК, по одному в каждой нити. Когда я пытаюсь использовать BioRuby для этого, либо временный файл BioRuby, либо стандартная библиотека ruby иногда поднимают исключения (что лучше, чем молчаливый сбой!).
Я настроил тест , который воспроизводит проблему, но только в некоторых случаях. Я предполагаю, что основными источниками изменчивости между тестами являются многопоточность, система временных файлов и исполняемый файл, используемый для выравнивания (ClustalW). Поскольку ClustalW, вероятно, не работает со сбоями, но может быть источником изменчивости, я думаю, что устранение этого может способствовать воспроизводимости.
Для тех, кто думает выбор не нарушен - это то, что мне тоже интересно. Тем не менее, в соответствии с журналом изменений , в августе 2009 года существовала обеспокоенность по поводу безопасности потоков tempfile. Кроме того, я проверил в списке рассылки BioRuby, правильно ли я вызываю код BioRuby, и, похоже, дело.