-->

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

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

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

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

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

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

# "<B>This is how you make text bold</B>"

puts CGI.unescapeHTML(translated)

# Печатается "<B>This is how you make text bold</B>"

19.1.2. Вывод и обработка форм

Наиболее распространенный способ взаимодействия с CGI-программой — форма. HTML-формы создаются с помощью специальных тегов, которые браузер представляет в виде элементов ввода данных. Подробное их обсуждение выходит за рамки данной книги, но существует немало книг и онлайновых руководств по этому предмету.

В классе

CGI
имеются методы для генерирования всех элементов HTML-форм. В примере ниже показано, как можно вывести и обработать форму.

require "cgi"

def reverse_ramblings(ramblings)

 if ramblings[0] == nil then return " " end

  chunks = ramblings[0].split(/s+/)

 chunks.reverse.join(" ")

end

cgi = CGI.new("html4")

cgi.out do

 cgi.html do

  cgi.body do

   cgi.hi { "sdrawkcaB txeT" } +

   cgi.b { reverse_ramblings(cgi['ramblings'])) +

   cgi.form("action" => "/cgi-bin/rb/form.cgi") do

    cgi.textarea("ramblings") { cgi['ramblings'] } + cgi.submit

   end

  end

 end

end

Здесь отображается многострочное поле ввода, текст в котором разбивается на слова и выводится в обратном порядке. Так, если набрать фразу «This is a test», то после обработки вы увидите «test a is This». Метод

form
класса
CGI
принимает параметр
method
— один из методов отправки формы, определенных в протоколе HTTP (
GET
,
POST
и т.д.). По умолчанию предполагается значение
POST
.

В этом примере демонстрируется лишь малая толика элементов форм, которые могут встречаться на HTML-странице. Полный перечень вы найдете в любом руководстве по HTML.

19.1.3. Куки

Мы уже упоминали, что HTTP — протокол без состояния. Это означает, что после того как сервер закончил обрабатывать запрос, он не может сказать, пришел ли следующий запрос от того же или какого-либо другого браузера. Тут-то и приходят на помощь куки (cookies) — способ, быть может, несколько грубоватый, сохранить состояние между последовательными запросами от одного и того же браузера.

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

Можно, конечно, читать и формировать куки вручную, но, как вы, наверное, догадались, в этом нет необходимости, поскольку библиотека CGI предоставляет класс

Cookie
, который инкапсулирует все технические детали.

require "cgi"

lastacc = CGI::Cookie.new("kabhi",

 "lastaccess=#{Time.now.to_s}")

cgi = CGI.new("html3")

if cgi.cookies.size < 1

 cgi.out("cookie" => lastacc) do

  "Hit refresh for a lovely cookie"

 end

else

 cgi.out("cookie" => lastacc) do

  cgi.html do

   "Hi, you were last here at: "+

   "#{cgi.cookies['kabhi'].join.split(' = ')[1]}"

  end

 end

end

Здесь создается кук

"kabhi"
, ключ которого
"lastaccess"
содержит текущее время. Если у браузера уже был такой кук, то выводится его значение. Куки хранятся в хэше, который является переменной экземпляра в классе CGI. Каждый кук может содержать несколько пар ключ-значение, поэтому при доступе к куку по имени вы получаете массив.

19.1.4. Сеансы пользователей

Куки — это хорошо, если вам нужно сохранить простые данные и вы не прочь возложить на браузер заботу об их хранении. Но часто предъявляются более жесткие требования. Что если нужно сохранить много данных и вы не хотите гонять их «взад-вперед» при каждом запросе? К тому же данные могут быть секретными, так что доверять их хранение браузеру нежелательно.

В таких случаях можно воспользоваться классом

CGI::Session
. Он аналогичен классу
CGI::Cookie
в том смысле, что значения хранятся в структуре, напоминающей хэш.

require "cgi"

require "cgi/session"

cgi = CGI.new("html4")

sess = CGI::Session.new(cgi, "session_key" => "a_test",

 "prefix" => "rubysess.")

lastaccess = sess["lastaccess"].to_s

sess["lastaccess"] = Time.now

if cgi['bgcolor'][0] =~ /[a-z]/

 sess["bgcolor"] = cgi['bgcolor']

end

cgi.out do

 cgi.html do

  cgi.body ("bgcolor" => sess["bgcolor"]) do

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