Фултон Хэл — Программирование на языке Ruby

Тут можно читать онлайн книгу Фултон Хэл - Программирование на языке Ruby - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.

Программирование на языке Ruby
Автор: Фултон Хэл
Количество страниц: 266
Язык книги: Русский
Язык оригинальной книги: Английский
Издатель: ДМК Пресс
Город печати: Москва
Год печати: 2007
ISBN: 5-94074-357-9
Прочитал книгу? Поставь оценку!
0 0

Программирование на языке Ruby краткое содержание

Программирование на языке Ruby - описание и краткое содержание, автор Фултон Хэл, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.

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

Программирование на языке Ruby - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на языке Ruby - читать книгу онлайн бесплатно, автор Фултон Хэл

   }

  </style>

 </head>

 #{content}

</html>

Теперь воспользуемся новым элементом в файле

template/books/find.xhtml
:

<Layout title='Details for #{@title}'>

 <h1>#{@title}</h1>

 <h2>#{@author}</h2>

 <p>Page last updated: #{@last_update}</p>

</Layout>

Все содержимое элемента

Layout
вставляется в переменную
content
в файле
layout.xhtml
. Элементы могут принимать параметры; атрибут title в открывающем теге
Layout
становится значением переменной экземпляра
@title
в файле
layout.xhtml
.

Вам это напоминает вызов метода с передачей ему аргументов? Так оно и есть. Мы можем определить разметку в виде класса Ruby (

src/element/layout2.rb
):

require 'nitro/element'

class Layout2 < Nitro::Element

 def render

  %^<html>

  <head>

   <title>#{@title}</title>

   <style>

    body {

     background-color: white; font-family: sans-serif;

    }

   </style>

  </head>

  #{content}

 </html>^

 end

end

А затем изменим файл

find.xhtml
, воспользовавшись элементом
Layout2
(нужно еще будет затребовать класс нового элемента в файле
run.rb
). Элементы могут содержать другие элементы, так что виды можно собирать из повторно используемых компонентов.

Часто встречаются большие фрагменты кода, содержащие логику, общую для нескольких приложений. Например, во многих Web-приложениях есть понятие учетной записи пользователя и авторизации. Чем заново писать код для каждой такой программы, можно включить уже готовый: это сэкономит время и упростит сопровождение.

Такой вид повторного использования называется частью. Часть (part) — это, по существу, мини-сайт, реализующий одну конкретную функцию. (В дистрибутив Nitro входит одна такая часть под названием

Admin
.) Код в таком подсайте не нуждается в отдельном файле
run.rb
, хотя включать его полезно, если вы хотите, чтобы часть могла выполняться автономно в демонстрационных целях.

Естественно, части хранятся в папке

part
. Пусть имеется некий код аутентификации пользователя, который можно использовать повторно. Тогда дерево частей приложения могло бы выглядеть так:

<app_root>/part/users

<app_root>/part/users.rb

<app_root>/part/users/public/

<app_root>/part/users/controller.rb

<app_root>/part/users/model/user.rb

<app_root>/part/users/model/acl.rb

<app_root>/part/users/template/login.xhtml

<app_root>/part/users/template/form.xinc

<app_root>/part/users/run.rb

Главный файл

run.rb
мог бы включить такую часть с помощью одной директивы
require
:

require 'part/users'

Теперь Nitro будет рассматривать весь код в каталоге

part/users
, как если бы он находился в дереве исходных текстов главного приложения. Поиск шаблонов начинается в папке template приложения и продолжается в подкаталогах каталога
part
. Если вы хотите переопределить шаблон, поставляемый вместе с частью, то нужно просто поместить замещающий вариант в соответствующий подкаталог папки
template
.

Часто приложение должно отображать повторяющиеся данные; обычно они оформлены в виде HTML-таблицы в шаблоне. Если число строк заранее не известно, то придется обойти какой-то набор.

Можно встроить код Ruby непосредственно в шаблон, но Nitro предлагает специальный механизм конвейерной компиляции, чтобы упростить программирование типичных логических конструкций.

Конвейерная компиляция — это последовательность преобразований, которым подвергаются шаблоны по мере объединения в действия. Существуют классы преобразования для различных задач, в частности статического включения файлов, XSLT-преобразований и локализации. Класс

Morphing
исследует разметку в шаблоне и ищет специальные атрибуты, которые обозначают различные преобразования.

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

@books
список книг, а часть шаблона для обхода этого цикла могла бы выглядеть так:

<h4>Books by #{@author}</h4>

<ul>

 <li each="book in @books" > #{book.title}</li>

</ul>

Класс

Morphing
находит атрибут each элемента li и преобразует его в следующий код:

<?r for book in @books ?>

<li>#{book.title} </li>

<?r end ?>

Порожденная таким образом разметка передается следующему этапу конвейера.

Точно так же для повтора элемента можно использовать атрибут

times
. Например, фрагмент

<img src='/img/ruby.png' alt='*' times='@book.rating' />
Поделиться книгой

Оставить отзыв