Tag: sigint

Ctrl + C不会杀死Sinatra + EM :: WebSocket服务器

我正在构建一个运行EM :: WebSocket服务器和Sinatra服务器的Ruby应用程序。 单独地,我相信这两个都配备了处理SIGINT。 但是,当在同一个应用程序中运行时,当我按Ctrl + C时,应用程序会继续运行。 我的假设是其中一个捕获SIGINT,阻止另一个捕获它。 不过,我不知道如何修复它。 这里的代码简而言之: require ‘thin’ require ‘sinatra/base’ require ’em-websocket’ EventMachine.run do class Web::Server < Sinatra::Base get('/') { erb :index } run!(port: 3000) end EM::WebSocket.start(port: 3001) do |ws| # connect/disconnect handlers end end

如何配置ruby以在Ctrl-C(SIGINT)上进入调试器?

我想在输入ctrl-C(或发送SIGINT)时进入调试器。 我已经安装了调试器 (我正在运行Ruby 1.9.3)并validation它是否有效。 我已将此添加到我的安装文件中(这适用于Padrino,但我认为它与Rails类似): # file: config/boot.rb Padrino.before_load do trap(“SIGINT”) { debugger } if Padrino.env == :development end …但是键入Ctrl-C不会调用调试器。 事实上,如果我用puts “saw an interrupt!”替换debugger puts “saw an interrupt!” ,键入Ctrl-C也不会导致打印。 更新 根据Mike Dunlavey的 这个建议 ,我尝试在调试器中显式调用catch Interrupt : $ rdebug `which padrino` console ^Z^Z$HOME/usr/bin/padrino:9 require ‘rubygems’ (rdb:1) catch Interrupt Catch exception Interrupt. (rdb:1) c => Loading development […]