ruby - 可以正常中断的来自 Rake 的长时间运行的 shell 命令?

标签 ruby rake

在几个项目中,我希望有一个类似 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/

相关文章:

ruby - 使用 :sql 模式格式时如何使 rake db :migrate generate schema. rb

ruby-on-rails - 如何将数据库结构从 db 导出到迁移文件中?

ruby - Ruby 中的 Sinatra 错误处理

ruby-on-rails - Bundler 找不到 gem "bundler": 的兼容版本

ruby - 卸载 Ruby gem

database - 如何抓取 Heroku 数据库?

ruby-on-rails - Rails 4.2 ActiveSupport 错误

ruby - Ruby 的方法解除绑定(bind)机制有什么意义?

javascript - rails 5 : use link_to target an mp3 (as a model object) as well as a separate div with a different attribute of the same object?

ruby-on-rails - 为Docker容器更新Ruby bin文件夹的正确方法是什么?