-->

Программирование на языке Ruby

На нашем литературном портале можно бесплатно читать книгу Программирование на языке Ruby, Фултон Хэл-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Программирование на языке Ruby
Название: Программирование на языке Ruby
Дата добавления: 16 январь 2020
Количество просмотров: 503
Читать онлайн

Программирование на языке Ruby читать книгу онлайн

Программирование на языке Ruby - читать бесплатно онлайн , автор Фултон Хэл
Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов. Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии. Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

 Main.new.add_decoration(Wee::PageDecoration.new('Wee'))

end

Wee::Utils::autoreload_glob('components/**/*.rb')

Wee::WEBrickAdaptor.register('/арр' => app).start

Класс

Main
вызывается как главный компонент приложения. Каждый компонент должен реализовать метод
render
, порождающий разметку. Вызов метода
add_decoration(Wee::PageDecoration.new('Wee'))
изменяет конвейер построения страницы так, что результаты обращения к Main#render дополняются HTML-кодом заголовка и хвостовика.

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

'/арр'
. По умолчанию подразумевается порт 2000, но можно при запуске указать любой другой номер в качестве параметра:

Wee::WEBrickAdaptor.register('/арр' => арр).start(:Port => 8787 )

Компонент

Main
определяет метод
render
, который порождает разметку.

class Main < Wee::Component

 def initialize

  super()

  # Здесь должен быть ваш код инициализации...

 end

 def render

  r.anchor.callback(:click).with { r.h1("Welcome to Wee!") }

  r.text "#{ @clicks || 'No' } clicks"

 end

 def click

  @clicks = (@clicks || 0) + 1

 end

end

Wee позволяет пользоваться синтаксисом Ruby для генерации HTML-кода примерно так же, как библиотека XML Builder Джима Вайриха и генератор XML в Nitro. Однако в Wee можно еще связать ссылку с действием (в данном случае с методом

click
). Когда пользователь щелкает по ссылке, сгенерированной Wee, приложение понимает, что нужно вызвать метод
click
.

19.5.2. Ассоциирование состояния с URL

В примере выше отслеживается текущее значение переменной

@click
, но она не связывается с URL. Если вы запустите эту программу, что увидите, что Wee генерирует довольно длинный URL, который по сути является GUID'om (globally unique identifier, глобально уникальным идентификатором). URL остается таким же, если не считать завершающего символа косой черты и целого числа. При каждом щелчке по ссылке Welcome to Wee число увеличивается на единицу

Если вручную изменить URL в браузере, то вы получите ту же самую страницу, показываемый счетчик щелчков не изменится. Нет никакой связи между URL и состоянием сервера. (Когда будете ставить эксперимент, не забудьте отключить кэширование в браузере).

Впрочем, это положение можно изменить, слегка модифицировав файл

main.rb
. Добавьте в метод
Main
такой код:

def backtrack_state(snap)

 super

 snap.add(self)

end

Теперь перезапустите приложение. Щелкнув несколько раз по ссылке, вручную измените URL в браузере так, чтобы повторно загрузилась предыдущая страница. Теперь счетчик должен показать то значение переменной

@click
, которое соответствует моменту генерации данного URL.

Чтобы проверить то же самое с использованием механизма продолжений Wee, добавьте после директив

require
в файл
run.rb
следующую строку:

require 'wee/continuation'

В Wee слишком много возможностей, чтобы рассмотреть их здесь подробно. Дополнительную информацию можно найти на следующих ресурсах:

• страница проекта Wee (http://rubyforge.org/projects/wee/);

• страница проекта Nemo (http://rubyforge.org/projects/nemo/):

• проект Seaside (http://seaside.st/)

Одна из интересных особенностей — возможность иметь вложенные компоненты и организовывать цепочки обязанностей, что позволяет собирать сайты из повторно используемых компонентов пользовательского интерфейса. Стоит также познакомиться с проектом Nemo — реализацией Mewa (Meta-level Architecture for Web Applications, метауровневая архитектура Web-приложений) на Wee.

19.6. Разработка Web-приложений с помощью IOWA

IOWA (Interpreted Objects for Web Applications — интерпретируемые объекты для Web-приложений) — это каркас, написанный Кирком Хейнсом (Kirk Haines). Он позволяет создавать повторно используемые, инкапсулированные Web-компоненты для генерации сайта.

19.6.1. Основные идеи IOWA

Приложение IOWA работает как фоновый процесс, который прослушивает сокет в ожидании запросов. IOWA включает различные адаптеры, так что источником запроса может быть CGI, Mongrel, WEBrick и т.д.

На домашней странице IOWA представлены хорошее объяснение архитектуры и учебное руководство, поэтому здесь мы приведем лишь краткий обзор основных особенностей.

Загрузить IOWA можно с сайта rubyforge.org. Gem-пакет будет подготовлен вместе с версией 1.0. Примеры, представленные в этом разделе, составлены на базе предварительной версии, доступной в виде zip- или tgz-файла.

В состав дистрибутива входит несколько примеров и тестов, демонстрирующих работу каркаса. Мы рассмотрим простое приложение, разработанное на основе этих примеров.

Для приложения IOWA нужен код, который запустит фоновый процесс, а в качестве фронтального процесса мы будем пользоваться встроенным сервером WEBrick. Сценарий

арр.rb
решает обе задачи:

require 'iowa_webrick'

class HWApplication < Iowa::Application

 self.daemonize = true

 attr_accessor :dbpool

 def initialize(*args)

  super

  Iowa.config[Iowa::Capplication][Iowa::Croot_url] = 'http://127.0.0.1:2000'

 end

end

Iowa.run

По умолчанию конфигурационные данные читаются из файла

арр.cnf
в текущем каталоге. Вот как выглядит наш файл:

socket:

Перейти на страницу:
Комментариев (0)
название