2015-07-14 2 views
0

Я начинающий веб-разработчик, и следующий вопрос только для того, чтобы связать несколько новых вещей в моем мозгу: Является ли файл маршрутов RoR альтернативой модулю mod_rewrite для Apache?Является ли файл маршрутов RoR альтернативой для модуля Apache 'mod_rewrite'?

Заранее благодарю всех участников.

ответ

0

это похоже на то, что это список шаблонов url, причем каждый шаблон имеет некоторые правила, связанные с ним.

Основное отличие заключается в том, что маршруты являются ВНУТРЕННЕМУ к Rails: mod_rewrite обычно будет принимать решение для любого маршрута, а затем обслуживать файл или передавать запрос другому прокси для обработки, поэтому его можно рассматривать как автономный процесс в конвейере запроса.

route.rb, с другой стороны, можно рассматривать как нечто, что работает внутри Rails, и решает, какой объект (где объекты обычно являются контроллерами) должен иметь метод, вызываемый на нем, проходящий через объект запроса. Возможно, это не совсем то, что происходит, но это что-то вроде этого. Rails похож на черный ящик, в который приходит запрос, и появляется ответ, а маршруты находятся внутри коробки.

Итак, я думаю, вы могли бы сказать, что это альтернатива mod_rewrite, потому что вместо использования mod_rewrite вы можете просто получить apache для передачи всех запросов в Rails и позволить Rails (используя код route.rb) понять это. Но это совсем другое дело.

EDIT: я просто перечитал это и понял, что он довольно расплывчатый. Может быть, кто-то еще даст более конкретный ответ :)

0

По существу, да.

Цель обоих этих инструментов - сопоставить HTTP-запрос с соответствующим действием на основе некоторых свойств запроса. Обычно эти свойства являются используемым методом HTTP (GET, POST, DELETE и т. Д.) И URI запроса. Несмотря на то, что он имеет другие применения, типичным вариантом использования для mod_rewrite является сопоставление различных шаблонов URL-адресов с различными сценариями. routes.rb, с другой стороны, сопоставляет пары методов HTTP и шаблонов URL («конечные точки») с методами контроллера (у него есть другие способы выражения этих сопоставлений, например метод resource).

Основное отличие состоит в том, что mod_rewrite всегда выполняет эту логику маршрутизации как часть веб-сервера Apache, прежде чем управление передается скрипту клиента. routes.rb устанавливает логику маршрутизации, которая выполняется внутри Rails. Но оба достигают того же. Маршрутизация Rails более переносима, поскольку вы можете переключаться между серверами Apache, nginx или rails, не переписывая логику маршрутизации с нуля каждый раз. Правила переписывания Apache, как правило, немного непостижимы, поэтому, если вам удобно использовать Rails-маршрутизацию, используйте его.

0

Я бы сказал, нет. Это два разных компонента, которые выполняют разные задачи.

У вас может быть запущено приложение Rails без использования mod_rewrite или даже Apache. Вы не можете запустить приложение rails без файла route.rb.

Файл Rails routes.rb несет ответственность за несколько разных вещей. Именно здесь генерируются URL-адреса ваших ресурсов. Это также место, где вы можете монтировать двигатели.

Для аналогий рассмотрим следующее: Routes.rb - это экипаж, ответственный за строительство дорог в вашем приложении. Mod_rewrite - парень в оранжевом жилете, рассказывающий вам, что эта дорога - тупик, следуйте за объездом.

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