Я с использованием RVM, Ruby 1.9.2 и Rails 3.0.7
Стандартное уничтожение процесса с другого терминала тоже не работает, но kill -9, конечно, работает.
Я нашел аналогичный вопрос, CTRL + C для сервера Webbrick игнорируется , но неясно, описывает ли этот вопрос ту же основную проблему. Кроме того, разрешение кажется неприменимым, поскольку я не использую: git в моем Gemfile.
обновление 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 с гемом заставляет меня теперь полагать, что этот вопрос на самом деле связан с CTRL + C для игнорирования сервера Webbrick , хотя приведенный выше тестовый пример показывает, что этот вопрос явно не вызван использованием: git for драгоценный камень.
обновление 2:
В обновлении 1 я упоминал, что сузил его до драгоценного камня. Когда я просмотрел этот драгоценный камень, я в конце концов нашел настоящего виновника. Драгоценный камень выполнял единственный системный вызов. Я внес очень незначительные изменения в тестовый сценарий, в котором я больше не загружаю драгоценный камень бариста, а просто добавляю один системный вызов в конец 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 для игнорирования сервера Webbrick . Я догадываюсь, что упомянутый ими драгоценный камень также выполняет системный вызов.