Системный вызов должен блокироваться, пока команда внутри не будет завершена. Возможно, файл создается не так, как вы предполагали, что может помешать запуску этой части вашего приложения.
Возможно, вы захотите использовать другой способ построения вашего пути, чтобы быть уверенным, что вы все правильно поняли:
csv_path = File.expand_path('output_csv_file', Rails.root)
unless (system('./c_executable', csv_path))
# Could't execute system command for some reason.
end
if (File.exists?(csv_path))
# ...
end
При совершении вызовов system
обычно рекомендуется указывать полный путь к исполняемому файлу, поскольку ваше приложение PATH
может отличаться от ожидаемого.