Я написал небольшое веб-приложение, которое запускает ant (пакетный файл). Время обработки пакетного файла может занять до нескольких минут.
index.haml перечисляет все доступные файлы ant, а run.haml запускает их. Поток, как это работает сейчас, заключается в том, что когда я щелкаю ссылку из index.haml, запускается скрипт ant, и после его завершения вся страница run.haml отправляется в браузер. Итак, после перехода по ссылке из index.haml я все еще вижу index.haml и ничего из run.haml
После перехода по ссылке из index.haml я хочу
- показать, какой скрипт будет запущен, а затем
- запустите скрипт ant, а затем
- отображать его результаты.
Мне рекомендовали в моем другом вопросе использовать
- вызов Ajax или
- отдельный рабочий поток. Например, BackgrounDRb, run_later или delayed_job
Я не понимал, как отдельный рабочий поток может мне помочь. Будут ли результаты отложенного задания, полученные вызовом ruby, отправляться в браузер после завершения задания?
Я также не понял, как я могу использовать Ajax в Sinatra.
Может ли кто-нибудь указать мне, на что может быть похоже решение для этого? Пожалуйста, обратите внимание, что я немного знаю руби, вчера немного выучил синатру и хамл. Ничего про Ajax :-) Учусь на примерах... и с удовольствием узнаю что угодно.
index.haml дает мне html как
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Available test suits</title>
</head>
<body>
<h1>Available test suits</h1>
<br/><br/>
<a href='run?run=login_build'>login_build</a>
<br />
<a href='run?run=login_cycle_build'>login_cycle_build</a>
<br />
<a href='run?run=login_cycle_academicyear_build'>login_cycle_academicyear_build</a>
</body>
</html>
run.haml выглядит так
!!!
%html
%head
%title Running
%body
= "Starting test suite: #{params['run']}"
- output = %x[cd C:\\Program Files\\TestPro\\TestPro Automation Framework410 && ant -lib lib -f "C:\\Program Files\\TestPro\\TestPro Automation Framework410\\Output Files\\builds\\#{params['run']}.xml"]
-#The result is
%br
= output.split("\n")[-2,2].join("<BR>")
= "<br/>"*2
%a(href="/")back to suits list