Сервер разработки локали Rails "rails s" для обслуживания нескольких запросов одновременно - PullRequest
2 голосов
/ 22 апреля 2011

Windows 7, Rails 3 здесь. В локальном режиме / режиме разработки rails server не обрабатывает несколько запросов одновременно. Сбой процесса и приглашение cmd впереди.

Я заметил это поведение, когда:

  • слишком много запросов AJAX, слишком близко друг к другу
  • загрузка простой страницы в 2 браузерах

Есть ли способ обойти это? Изменить локальный сервер (по умолчанию это webrick)? Как это сделать?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 24 августа 2012

Я не знаю, нужен ли для этого ответ, но я сделал это, добавив gem 'puma' в Gemfile, тогда вам нужно будет добавить config.threadsafe! либо к config/application.rb, либо к файлу среды, с которой вы работаете(например, config/environments/development.rb.

Иногда вы можете не захотеть использовать потокобезопасность, поэтому я сделал это в моем development.rb:

if ENV["THREADS"]
  config.threadsafe!
end

Сейчас (с тем, что я сделал в моем development.rb) Я могу сделать rails s Puma, и он будет работать с максимум 16 потоками и может обрабатывать несколько запросов. Вы также можете увеличить пул потоков и настроить больше с помощью Puma, документы здесь

Обновление

Обратите внимание, что использование config.threadsafe! не требуется в Rails 4+ и устарело, я считаю.

0 голосов
/ 22 апреля 2011

Вам нужно установить драгоценный камень mongrel и указать, какой сервер вы хотите использовать, когда вы rails s

Я не знаю, как вы, ребята, делаете это на выигрышных системах.Почему бы не запустить виртуальную коробку Unix?не рельсы просто намного легче с этим?Так что с Unix это будет что-то вроде:

Установите mongrel gem:

gem install mongrel

Затем укажите, какой сервер вы хотите запустить:

rails server mongrel
...