Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример диплома специалиста / 002 Пояснювальна записка.docx
Скачиваний:
15
Добавлен:
28.03.2016
Размер:
323.39 Кб
Скачать

25

02070743.00569-01 81 01

raongrel_rails start –G myconfig.yml –p 3000 –r /home/hal/docs –1 my.log

Задані параметри будуть збережені (у форматі YAML) у файлі myconfig.yml (за наявності прапора –G сервер завершується відразу після створення конфігураційного файлу).

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

mongrel_rails start –С myconfig.yml

Не вживайте прапор –с разом з іншими. Він передбачає, що всі параметри знаходяться у вказаному файлі.

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, то вас може зацікавити система GemPlugin. Це, по суті, автозавантажувані gem-пакети, які стають «частиною» Mongrel. Наприклад, модуль «Mongrel cluster» дозволяє легко управляти кластером серверів Mongrel.

26 02070743.00569-01 81 012.8. Особливості розробки алгоритмів для Ruby

Розглянемо на прикладі особливості розробки і реалізації алгоритмів для Ruby. Для цього створимо сторінку з вікном введення і кнопкою «Зберегти», при натисненні на яку відбувається збереження тексту з вікна введення у файл notepad.txt. Введення здійснюється через браузер за адресою http://localhost:8080. Сервер запускатимемо на порт 8080. Тепер, власне, сама програма:

require 'webrick'

server = WEBrick::HTTPServer.new(:Port=>8080)

server.mount_proc('/'){ |req, resp|

File.open('notepad.txt', 'w'){ |f| f.write(req.query["text"]) } if req.query["text"]

resp['Content-Type']= 'text/html'

resp.body = %& <html><body><center><form method="post">

<textarea name="text" rows="4" cols="40">#{IO.read('notepad.txt')}</textarea><br/>

<input type="submit" name="update" value="Сохранить"/>

</form></center></body></html></nowiki>&

}

server.start

Розглянемо код детальніше:

require 'webrick' – підключення бібліотеки WEBrick для побудови серверів (у тому числі і Web-сервер-серверів).

:Port=>8080 – асоціативний масив із значенем порту. Коли порт 80 зайнятий, доводиться шукати інший. Винятковою магічною силою порт 8080 не володіє. Тому, за бажання, його можна змінити на іншій.

server.mount_proc('/') – на віртуальну кореневу директорію ми вішаємо процедурний сервлет. Він займатиметься обробкою запиту на адресу http://localhost:8080/, тобто звернення до віртуальної кореневої директорії. Аби змінити запит, на який відгукуватиметься сервлет, досить замінити рядок '/' на іншу, наприклад '/notepad'. Тоді, адреса сервлета буде http://localhost:8080/notepad.