2015-03-26 1 views
0

Я экспериментировал с задачей Rake с Cron. Я начал без рубиновых процессов, затем началась работа Cron и породила один процесс. Выделенный процесс ниже, что находится в ведении Cron, который, как ожидается:Почему консоль Rails создает так много Ruby-процессов?

enter image description here

Я хотел проверить, если какие-либо записи были записаны в базу данных. Я запустил rails c, чтобы войти в консоль Rails, и заметил, что в моем списке процессов появились четыре других рубиновых процесса, как указано выше. Почему это произойдет? Я думаю, что запуск консоли должен создать еще один процесс, а не четыре.

После выхода из консоли у меня осталось три процесса Ruby, включая выполняемую задачу Rake.

Я использую Rails 4.2.

Это не то, что я считаю, что это проблематично, но мне любопытно, почему для REPL потребуется несколько процессов, а затем два оставшихся процесса после закрытия REPL.

+1

Попробуйте проверить консоль без хрон; вы можете идентифицировать процесс, связанный с cron, как консольный процесс. –

+0

@ Prakash Murthy Закончился cron, и эти два процесса Ruby остались. Я их убил, затем попробовал консоль Rails. Всего было создано 4 рубиновых процесса. После выхода из консоли я вернусь к двум процессам, которые просто сидят там бесконечно. – Ravenstine

ответ

3

Это из-за spring, который по умолчанию поставляется с рельсами.

Возможно, вы заметили, что второй раз, когда вы запускаете rails c, происходит намного быстрее, чем в первый раз. Это связано с тем, что в первый раз, когда вы запускаете сценарий с расширенным доступом, ваше приложение загружается как обычно, а затем вилки запускают то, что вы запросили. Во второй раз вокруг этого сценария загрузчика можно просто разблокировать второй раз, поэтому вы получаете гораздо более быстрый запуск. Это возможно из-за этих дополнительных процессов, которые вы заметили.

Вы можете увидеть их, запустив

spring status 

И вы можете убить их, запустив

spring stop 
Смежные вопросы