[英]What are some good ways to make an async web app on ruby these days?
[英]Some commands hang my Ruby web app
我正在玩Rails和Sinatra,我想在服務器上執行命令。 這些命令是從表單輸入的。 關鍵是,如果我輸入需要輸入的命令,則整個應用都會掛起。 這是我用來執行它們的代碼:
@threads << Thread.new do
Thread.current["buffer"] = ""
puts "starting #{params[:command]}"
IO.popen(params[:command]) do |io|
io.each_line {|l| Thread.current["buffer"] += l}
end
end
這對於像ls
這樣的簡單命令來說是可以的...但是例如,如果我輸入pause
,它將期望用戶按下一個鍵繼續,一切都將掛起。 我該如何解決?
編輯:我只記得我去年在這里問過有關Ruby線程行為的問題: 為什么這樣運行就像沒有線程? 。 我嘗試使用1.9.1解釋器運行Sinatra,但它確實有效。 在1.8.6下,則不是。 如果他願意,一個mod可以解決這個問題。
嘗試將/ dev / null管道到您的子進程中:
IO.popen("#{params[:command]} </dev/null") do ...
解決方案:我只記得我去年在這里問過有關Ruby線程行為的問題: 為什么它像沒有線程一樣在運行? 。 我嘗試使用1.9.1解釋器運行Sinatra,但它確實有效。 在1.8.6下,則不是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.