Почему я должен удалить файл index.html в приложении rails, чтобы контроллер отображался в корневой каталог для отображения? - PullRequest
3 голосов
/ 26 декабря 2010

Я сделал быстрый поиск, но не смог найти прямой ответ. Новичок в Rails и просто пытается понять , почему это так. Я был бы очень признателен, если бы кто-то мог просто указать на фрагмент кода, который показывает, где он указывает на index.html, если он существует, или, если это неправильный способ думать, каков правильный ответ.

Ответы [ 4 ]

4 голосов
/ 26 декабря 2010

В Rails 3 railties определяет стек промежуточного программного обеспечения по умолчанию (railties / lib / rails / application.rb), который позволяет каждому типу промежуточного программного обеспечения обращаться к вызову запроса. Первый модуль в стеке - ActionDispatch :: Static (его можно отключить с помощью config.serve_static_assets). Модуль статического промежуточного программного обеспечения находится в ActionPack (actionpack / lib / action_dispatch / middleware / static.rb). Соответствующие строки из этого:

path   = env['PATH_INFO'].chomp('/')
...
if file_exist?(path)
  return @file_server.call(env)

@ file_server определен выше как Rack :: File, который находится в rack / lib / rack / file.rb. Он просто читает файл и передает содержимое как тело.

Итак, когда вы удаляете index.html, file_exist? Сбой вызова, который просто передает запрос следующему промежуточному программному обеспечению и, в конце концов, попадет на обычный маршрутизатор Rails.

2 голосов
/ 26 декабря 2010

rails автоматически заглянет в папку / public FIRST, прежде чем что-либо проверять. Это даже не смотрит на любой код РБ. Это его способ обслуживания статических страниц.

0 голосов
/ 27 декабря 2010

Ваша цитата: "кусок кода, который показывает, куда он указывает на index.html, если он существует"

Я даже не уверен, удосуживается ли ваш веб-сервер запускать одну строку кода Rails, если он просто может передавать статический файл. Было бы совершенно неэффективно запускать код Rails перед возвратом изображений, статического HTML и т. Д. В веб-браузер.

Я не знаю деталей различных реализаций Rails, но я думаю, что хороший способ подумать об этом - веб-сервер отправит запрос в Rails только тогда, когда этого не произойдет. найдите (статический) файл в своей файловой системе. Затем запрос передается в Rails, как если бы это была ошибка File Not found (без отправки статуса 404) ... и тогда Rails может начать сопоставлять URL с файлом маршрутов.

0 голосов
/ 26 декабря 2010

Rails настроен на просмотр /public/index.html, но на этой странице есть много полезной информации, особенно если вы только отправляетесь в путешествие по рельсам.Как только вы войдете в нее, вы узнаете, первое, что вы делаете, это rm public/index.html после того, как создаете новое пустое приложение rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...