在几个项目中,我希望有一个类似 rake server
的 rake 任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:
task :server do
%x{bundle exec rackup -p 1234}
end
这行得通,但是当我准备停止它时,按 Ctrl+c
并没有正常关闭;它中断了 Rake 任务本身,它说 rake aborted!
并给出堆栈跟踪。在某些情况下,我必须执行 Ctrl+c
两次。
我可能可以用 Signal.trap
写一些东西来更优雅地中断它。有没有更简单的方法?
最佳答案
trap('SIGINT') { puts "Your message"; exit }
这应该可以解决问题。
您甚至可以在任务级别添加陷阱
。
task :server do
trap('SIGINT') { puts "Your message"; exit }
%x{bundle exec rackup -p 1234}
end
关于ruby - 可以正常中断的来自 Rake 的长时间运行的 shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21146136/