我有一个部署脚本,可以从我的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文件。
答案 0 :(得分:0)
您可以将输出重定向到文件并通过HTTP显示文件并每隔x秒刷新页面
get '/progress' do # This page should be refreshed every x seconds
# render the file here
end
答案 1 :(得分:0)
我认为我在寻找的是IO#popen
将指定的命令作为子进程运行;子流程的标准 输入和输出将连接到返回的IO对象。