Задать вопрос
eucalipt
@eucalipt
Самоделкин.

Как Ruby веб-фреймворки обучают оперировать заголовками?

В стандартном Ruby, насколько мне известно, нет никаких встроенных инструментов для оперирования веб-заголовками, как, например, в PHP. Так как же тогда пишутся все эти многочисленные веб-фреймворки типа Rails, Padrino, Sinatra? Ведь их основная суть - оперирование заголовками с последующей обработкой роутов.

Вот создал я, например, файл hi.rb. Что мне нужно в него написать (пускай у меня стоит Passenger как application-server), чтобы дать ему понять, что, если кто-то ввел в строке mysite/hi, мне нужно вывести "Hello World", а если mysite/signup, то нужно вывести форму заголовка?

Хоть убей, не могу двигаться в изучении фреймворков дальше, пока не узнаю, как же все-таки организована логика их работы.

Есть мысль, что эти методы предоставляют сами веб- и application-серверы, но где найти документацию по аспектам работы с ними, скажем?

Если заглянуть в исходники Sinatra, то в середине класса Base модуля Sinatra откуда-то возникают методы header() (может я что-то упустил или неправильно понял, поправьте меня), которые как раз и занимаются обработкой запросов.

Как такое организовать самому?
И еще. В Rails можно использовать различные application-серверы, такие как Unicorn, Passenger, стандартный WEBrick, thin. Неужели в самом Rails коде заложена поддержка всех серверов? Или все-таки каждый из них предоставляет одни и те же конечные методы работы?

Хотелось бы услышать подробный ответ, конкретно объясняющий суть работы такого рода приложений.
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Думаю Вам нужен Rack
Ответ написан
Fahrenhe17
@Fahrenhe17
Ruby on Rails developer
У руби есть скажем так "дефолтный" вебсервер интерфейс - rack.
Ответ на Ваш вопрос кроется в короткой документации этой штуки. Если я конечно все правильно понимаю :)

p.s. а все сервера поддерживают не рельсы, а этот самый rack
www.rubydoc.info/github/rack/rack/#Supported_web_s...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы