Выполнить скрипт и показать вывод / прогресс в обзоре [Ruby / Sinatra (Rails)] - PullRequest
2 голосов
/ 25 августа 2011

У меня есть сценарий развертывания, который вызывается из помощника в моем приложении Sinatra.

Я хочу показать «развертываемый» вид / страницу, а затем выполнить сценарий.

Затем, когдасценарий завершен, покажите новую страницу с текстовым полем с выводом сценария в.

Как это можно сделать?

# update.rb - the main app
helpers do
  def run_update
    command = "./script.sh"
    @ok = system( command )
  end
end

post '/version' do
  run_update     # putting this after the erb call doesnt fix it!?
  erb :version
end

В настоящее время он зависает после того, как сообщение сделано с главной страницы.,Затем, когда скрипт завершит работу, он отобразит файл version.erb.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Я думаю, что я искал: IO # popen

Запускает указанную команду как подпроцесс;стандартный вход и выход подпроцесса будет подключен к возвращенному объекту ввода-вывода.

0 голосов
/ 25 августа 2011

Вы можете перенаправить вывод в файл и отобразить файл по HTTP и продолжать обновлять страницу каждые x секунд

get '/progress' do # This page should be refreshed every x seconds

  # render the file here

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...