Я использую RVM, Ruby 1.9.2 и Rails 3.0.7
Стандартное уничтожение процесса с другого терминала тоже не работает, но kill -9 делает, конечно.
Я нашел аналогичный вопрос, CTRL + C на сервер Webbrick проигнорирован, но неясно, описывает ли этот вопрос одну и ту же основную проблему. Кроме того, разрешение, похоже, не применяется, поскольку я не использую: git в моем Gemfile.
update 1: (старый теперь... см. обновление 2, ниже, для реального совка)
Мне удалось сузить проблему до одного драгоценного камня. Если вы используете следующий тест script, вы также можете увидеть эту проблему (если вы используете Ubuntu 11.04... в 10.04 не было проблемы)
rm -rf tmpkilltest
rvm 1.9.2
rvm --force gemset delete tmpkilltest
rvm gemset create tmpkilltest
rvm [email protected]
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 с драгоценным камнем, заставляет меня теперь полагать, что этот вопрос на самом деле связан с CTRL + C, который игнорируется сервером Webbrick, хотя вышеприведенный тестовый пример показывает, что это явно не вызвано использованием: git для драгоценного камня.
обновление 2:
В обновлении 1 Я упомянул, что сузил его до драгоценного камня. Когда я прошел через этот камень, я в конце концов нашел настоящего преступника. Драгоценный камень делал единый системный вызов. Я сделал очень незначительную модификацию теста script, где я больше не загружаю камень бариста, но я просто добавляю один системный вызов в конце application.rb. При этом системном вызове ctrl-c не работает. Удалите системный вызов, и он работает.
rm -rf tmpkilltest
rvm 1.9.2
rvm --force gemset delete tmpkilltest
rvm gemset create tmpkilltest
rvm [email protected]
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, чтобы сервер веб-браузера проигнорировал. Моя догадка заключается в том, что упоминаемый жемчуг также вызывает системный вызов.