Не могу остановить WEBrick 1.3.1 с помощью Ctrl-C в Ubuntu 11.04 - PullRequest
33 голосов
/ 05 мая 2011

Я использую 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 для драгоценного камня.

обновление 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, игнорируемом . Я догадываюсь, что камень, о котором они говорят, также делает системный вызов.

Ответы [ 13 ]

0 голосов
/ 04 июля 2011

Мой последний ответ был удален, не знаю почему, но я пытаюсь снова, потому что я действительно думаю, что это очень связано с проблемой.

В моем Gemfile у меня есть только один драгоценный камень, использующий аргумент: git.

gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'

У меня та же проблема со всеми вами, Ctrl + C игнорируется; но если я удалю эту зависимость от gem (и удаляю связанный инициализатор), проблема исчезнет, ​​и я могу использовать ctrl + c, как и раньше.

Я мог бы подумать, что это ошибка, связанная с гемом rails_admin, но, как я читал в этом другом вопросе: CTRL + C на сервере Webbrick игнорируется более вероятно, что он связан с любым гемом, в котором используется параметр: git ...

Надеюсь, это полезно.

0 голосов
/ 02 июня 2011

Интересный опыт (и хороший обходной путь для следующих недель):

Если вы находитесь в Ubuntu и используете Guake для быстрого доступа к терминалу, вы можете запустить

rails s

там. Ctrl + C там воспроизводимо работает для меня и останавливает сервер.

Надеюсь, я смогу помочь!:)

РЕДАКТИРОВАТЬ: Поскольку, очевидно, это не воспроизводимо для всех, вот моя установка: Ubuntu 11.04, 32-разрядная версия, Guake 0.4.2-4ubuntu1

0 голосов
/ 25 мая 2011

Кажется, что проблема с Unity и Terminal, ^ c по какой-то причине не обрабатывается правильно. попробуйте сделать то же самое, используя terminator (лучший терминал). Или просто используйте гнома.

По крайней мере, так я решил проблему. Я предлагаю перенести это на askubuntu.com.

В U10.04 у меня была эта проблема при запуске webrick, mongrel, console, sqlite, не имело значения, что я запускал на самом деле.

...