Почему Rails не может работать с mod_ruby?

Извините, если это звучит как глупый вопрос, потому что это, кажется, одна из тех вещей, которые не имеют смысла, но кто-то может объяснить мне, почему Rails нужен свой собственный сервер (Mongrel, WEBrick, mod_rails и т. Д.) И может ' т просто использовать mod_ruby?

3 ответа

Решение

Все экземпляры apache, работающие с mod_ruby, имеют общий интерпретатор Ruby. Это означает, что его нельзя использовать вообще на общих хостах или в любой среде, где на одном компьютере запущено несколько приложений Rails. Может быть возможно запустить несколько копий одного и того же приложения на одном компьютере, но вы также можете легко обнаружить ошибки. Поскольку рельсы являются однопоточными, запуск только одного процесса ruby ​​для каждой машины является немыслимым.

Кроме того, это не так хорошо работает.

Для более глубокого обсуждения, проверьте блог этого сотрудника Phusion

Уже отвечено, что mod_ruby приводит к общему интерпретатору Ruby, но причина, по которой это особенно проблематично, заключается в том, что классы попирают друг друга. Например, рассмотрим ActiveRecord::Base, который определяет соединение с определенной базой данных. Состояние этого класса отличается в разных приложениях Rails, поэтому, как только несколько приложений Rails должны были запускаться на одном и том же интерпретаторе, у вас возникает серьезная классовая борьба.

В другом ответе говорилось, что Rails является однопоточным, но это не обязательно верно для Rails 2.2.2. Я бы оставил это как комментарий к этому ответу, но я в кармической рубашке:)

"mod_ruby использует по одному интерпретатору для каждого процесса Apache, что означает, что приложения обходят друг друга в пространствах имен. По крайней мере, для Rails это неприемлемо, так что это 1 приложение на установку Apache, если вы хотите mod_ruby". - Дэвид Хайнмайер Ханссон

Теперь, когда он был немного высмеян, если вы все еще хотите его использовать, посмотрите FAQ по mod_ruby

Dreamhost действительно попытался включить ruby ​​в свою хостинговую среду, это было сделано в их блоге, на основании их выводов из этой работы.

Другие вопросы по тегам