【发布时间】:2011-08-18 23:50:00
【问题描述】:
我正在使用 RVM、Ruby 1.9.2 和 Rails 3.0.7
从另一个终端标准终止进程也不起作用,但是 kill -9 当然可以。
我发现了一个类似的问题,CTRL+C to Webbrick server ignored,但不清楚该问题是否描述了相同的潜在问题。此外,该决议似乎并不适用,因为我没有在我的 Gemfile 中使用 :git。
更新 1:(现在已经旧了......请参阅下面的更新 2,了解真正的独家新闻)
我设法将问题缩小到一个宝石。如果您使用以下测试脚本,您也可以看到问题(假设您使用的是 Ubuntu 11.04...10.04 中没有问题)
rm -rf tmpkilltest
rvm 1.9.2
rvm --force gemset delete tmpkilltest
rvm gemset create tmpkilltest
rvm 1.9.2@tmpkilltest
gem install rails -v=3.0.7 --no-rdoc --no-ri
gem install sqlite3 -v=1.3.3 --no-rdoc --no-ri
rails new tmpkilltest
cd tmpkilltest
echo "gem 'barista', '1.0'" >> Gemfile
bundle
rails s
这个问题是由 Rails 与 gem 的交互引起的,这让我现在相信这个问题实际上与 CTRL+C to Webbrick server ignored 相关,尽管上面的测试用例表明这个问题是显然不是使用 :git 作为 gem 造成的。
更新 2:
在 update 1 中,我提到我将其范围缩小到一个 gem。当我通过那颗宝石时,我最终找到了真正的罪魁祸首。 gem 进行了一次系统调用。我对测试脚本进行了非常小的修改,不再加载 barista gem,而是在 application.rb 的末尾附加了一个系统调用。使用该系统调用, ctrl-c 不起作用。删除系统调用,它确实可以工作。
rm -rf tmpkilltest
rvm 1.9.2
rvm --force gemset delete tmpkilltest
rvm gemset create tmpkilltest
rvm 1.9.2@tmpkilltest
gem install rails -v=3.0.7 --no-rdoc --no-ri
gem install sqlite3 -v=1.3.3 --no-rdoc --no-ri
rails new tmpkilltest
cd tmpkilltest
bundle
echo "\`date\`" >> config/application.rb
rails s
这可以解释这个问题与CTRL+C to Webbrick server ignored 之间的相似之处。我的预感是他们提到的 gem 也会进行系统调用。
【问题讨论】:
-
我对 ruby 1.9.2 和 ubuntu 11.04 确实有同样的问题,这真的很烦人。请让我了解可能的解决方案:)
-
您能接受答案吗?它不一定是我的,但那会很好:-P
-
这是个好问题,但我不知道答案。如果没有实际的解决方案,我通常会接受一种解决方法作为答案。我想 SO 的部分用处是让通过 Google 解决问题变得更容易,所以对于大多数实际上不在 Webrick 上工作的人来说,解决方法可能就很好了。除此之外的任何东西都可能属于 Webrick 错误跟踪器(或任何有问题的组件)。
标签: ruby-on-rails ruby-on-rails-3 ubuntu ubuntu-11.04