Вход/Регистрация
Программирование на языке Ruby
вернуться

Фултон Хэл

Шрифт:

• 

FileHandler

• 

ProcHandler

• 

CGIHandler

• 

ERBHandler

Поскольку сервлет

ProcHandler
особенно интересен, скажем о нем несколько слов. Он позволяет «лениться», то есть не создавать подкласса
AbstractServlet
. Вместо этого мы передаем
proc
:

# Непосредственное монтирование блока...

server.mount_proc('/here') do |req, resp|

 resp.body = "Это то, что выводит мой блок."

end

# Создать объект Proc и смонтировать его...

some_proc = Proc.new do |req, resp|

 resp.body = ' Это то, что выводит мой Proc.'

end

server.mount_proc('/there', some_proc)

# Другой способ смонтировать Proc...

my_handler = HTTPServlet::ProcHandler.new(some_proc))

server.mount('/another', my_handler)

WEBrick располагает и многими другими возможностями, например точками подключения для выполнения дополнительных задач (скажем, запуска какой-нибудь программы при старте). Имеются также развитые средства протоколирования, аутентификации по протоколу HTTP и т.д. Дополнительную информацию ищите в онлайновой документации на сайтеили где-либо еще.

19.7.4. Сервер Mongrel

Автором Mongrel является Зед Шоу (Zed Shaw) при участии других. Основная цель этого сервера — повысить производительность по сравнению с WEBrick. В данном отношении он добился значительных успехов и работает во много раз быстрее (хотя провести точные измерения сложно: результат зависит от многих факторов).

Mongrel часто используют в сочетании с Rails, а документация местами ориентирована на Rails. Но жесткой привязки к Rails нет — сервер может работать и в других контекстах.

Mongrel — скорее, приложение, тогда как WEBrick больше напоминает библиотеку. Во многом они схожи, но порядок запуска и API различаются.

Во многих случаях Mongrel можно запустить как приложение без написания какого-либо кода. Он понимает три основные команды:

start
,
stop
и
restart
. У команды
start
много параметров, модифицирующих поведение сервера, например:
– -port portnum
,
– -log filename
,
– -daemonize
и т.д. Чтобы получить полный список, введите такую команду:

mongrel_rails start -h

Запуск в стандартном режиме — это хорошо, но рано или поздно возникнет нужда в чем-то необычном. На этот случай предусмотрены конфигурационные файлы.

Простой способ подготовить конфигурационный файл для Mongrel — воспользоваться флагом

– G
. Например, можно ввести такую командную строку:

mongrel_rails start -G myconfig.yml -p 3000 -r /home/hal/docs -l my.log

Заданные параметры будут сохранены (в формате YAML) в файле

myconfig.yml
(при наличии флага
– G
сервер завершается сразу после создания конфигурационного файла).

Для чтения параметров из конфигурационного файла задайте флаг

– C
:

mongrel_rails start -С myconfig.yml

Не употребляйте флаг

– C
вместе с другими. Он предполагает, что все параметры находятся в указанном файле.

Mongrel предлагает API для тонкой настройки поведения сервера. Флаг

– S
позволяет задать имя сценария, написанного с использованием этого API, который представляет собой небольшой язык предметной области (DSL — Domain-Specific Language). В документации приведен пример такого сценария (который добавляет обработчик для каталога, отличного от текущего):

# Файл: config/mongrel.conf

uri "/newstuff", :handler => DirHandler.new("/var/www/newstuff")

# Вызывается такой командой:

# mongrel_rails start -S config/mongrel.conf

Mongrel можно использовать и так же, как WEBrick. Следующая интуитивно понятная программа прекрасно работает:

require 'mongrel'

class TinyHandler < Mongrel::HttpHandler

 def process(request, response)

response.start(200) do |head,out|

head["Content-Type"] = "text/html"

out.write <<-EOF

Это всего лишь тест...

EOF

end

 end

end

server = Mongrel::HttpServer.new("0.0.0.0", "3000")

server.register("/stuff", TinyHandler.new)

  • Читать дальше
  • 1
  • ...
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: