执行脚本并在视图中显示输出/进度[Ruby / Sinatra(Rails)]

时间:2011-08-25 09:27:24

标签: ruby-on-rails ruby bash sinatra

我有一个部署脚本,可以从我的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 :(得分:0)

您可以将输出重定向到文件并通过HTTP显示文件并每隔x秒刷新页面

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

  # render the file here

end

答案 1 :(得分:0)

我认为我在寻找的是IO#popen

  

将指定的命令作为子进程运行;子流程的标准   输入和输出将连接到返回的IO对象。