В чем разница между Rack и Rails Metal (Ruby)? - PullRequest
6 голосов
/ 18 апреля 2009

Я не понимаю!

Стойка: http://rack.rubyforge.org/

Рельсы Металл: http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal

Я прочитал две статьи, и мои глаза стали размытыми. Как соотносятся два компонента? Примеры были бы хороши?

Ответы [ 4 ]

13 голосов
/ 18 апреля 2009

Rack - это очень легкая спецификация, которую могут реализовать веб-серверы Ruby. Это промежуточное ПО, которое означает, что оно находится между веб-сервером (например, Passenger) и Rails.

Rails Metal - это способ обработки HTTP-запроса с использованием Rails, когда вам нужна максимальная производительность. Это фактически сводит вас к железу и обходит все обычные функции (и, следовательно, накладные расходы), которые дает вам стандартный цикл запроса / ответа Rails. Технически Rails Metal - это реализация обработчика Rack.

Вы можете найти эти два Railscasts на предмет информативным:

Вы можете получить список стека промежуточного программного обеспечения Rack для приложения Rails, используя rake middleware

4 голосов
/ 18 апреля 2009

На сайте Jesse Newland есть отличное обсуждение и несколько примеров :

Итак, по сути, Rails Metal - это тонкая обертка вокруг новой стойки Rails поддержка промежуточного программного обеспечения . Стойка промежуточное программное обеспечение это довольно мощный материал: независимые от каркаса компоненты, которые обрабатывать запросы самостоятельно или в концерт с другим промежуточным программным обеспечением.

4 голосов
/ 18 апреля 2009

Rack - это универсальный Ruby API / уровень абстракции, который позволяет интегрировать различные платформы приложений в веб-сервер.

Rails Metal - это реализация Rails-обработчика Rack. Он включает в себя не только обработчик, который вызывает Rails, но также предоставляет собственный API, который упрощает создание собственных обработчиков, которые обращаются к веб-серверу и обходят ядро ​​Rails.

0 голосов
/ 09 августа 2018

В дополнение к различиям, описанным другими, я хотел бы отметить, что приложение Rack может быть либо промежуточным ПО, либо конечной конечной точкой, тогда как ActionController::Metal всегда является конечной точкой, а не промежуточным ПО.

...