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

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

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

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

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

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

require 'test/unit' unless defined? $ZENTEST and $ZENTEST

class TestAlpha < Test::Unit::TestCase

 def test_process

  raise NotImplementedError, 'Need to write test_process'

 end

 def test_process_bang

  raise NotImplementedError, 'Need to write test_process_bang'

 end

end

module TestAlpha

 class TestBeta < Test::Unit::TestCase

  def test_bar

   raise NotImplementedError, 'Need to write test_bar'

  end

  def test_bar_equals

   raise NotImplementedError, 'Need to write test_bar_equals'

  end

  def test_foo

   raise NotImplementedError, 'Need to write test_foo'

  end

  def test_foo_eh

   raise NotImplementedError, 'Need to write test_foo_eh'

  end

  def test_foo_equals

   raise NotImplementedError, 'Need to write test_foo_equals'

  end

 end

end

# Number of errors detected: 9

Обратите внимание, что каждый тестовый метод возбуждает исключение (предложение

raise
). Идея в том, что все тесты завершаются неудачно, пока вы явно не напишете код.

Исходный файл почему-то не включается в тестовый. Можно поместить в начало тестового файла директиву

require 'file'
или эквивалентную ей (предварительно затребовав
test/unit
). Тогда тестовый код увидит определения ваших классов.

В командной строке можно указать и второй параметр. Если добавить код в тестируемый класс, то тестовые классы окажутся устаревшими. Чем обновлять их вручную, можно сгенерировать только «обновления»:

zentest file.rb tfile.rb >tfile2.rb

В комплект входит еще одна полезная программа:

unit_diff
. Рассмотрим простое утверждение
assert_equal ("foo", "bar")
. Оно приводит к печати следующего сообщения:

 1) Failure:

testme(Foo) [(irb):7]:

<"foo"> expected but was

<"bar">.

Тут все просто и понятно. Но предположим, что каждая из переданных строк (string) состояла из нескольких строчек (line), а различие начиналось только в седьмой строчке. Программа

unit_diff
как раз призвана навести порядок в таком плохо читаемом тексте. Она работает аналогично утилите
diff
, имеющейся в UNIX; вызывать ее следует как фильтр после обычной тестовой программы.

ruby testfile.rb | unit_diff

Программа понимает следующие флаги:

-h Справка о порядке запуска

-v Номер версии

-b Не считать различными фрагменты, различающиеся только по количеству

   пробелов

-c Выполнять контекстное сравнение

-k Не удалять временные файлы

-l Включать в дельту номера строк

-u Выполнять унифицированное сравнение

Программа

autotest
наблюдает за всеми вашими комплектами тестов и запускает те, которые были недавно изменены. Она предназначена для тех лентяев, которым трудно даже ввести имя файла для прогона тестов.

Для пользования этим инструментом нужно соблюдать некоторые соглашения об именах. Правила простые:

• все тесты должны находиться в каталоге

test
;

• имена всех файлов должны начинаться с

Test_
;

• имена классов должны начинаться с

Test
;

• подлежащий тестированию код должен находиться в каталоге

lib
;

• файлам в каталоге

lib
должны соответствовать файлы в каталоге
test
(их имена, конечно, должны начинаться с
test_
).

Будучи запущена, программа

autotest
прогоняет тесты по мере их обновления. Если какой-то тест завершается неудачно, она будет прогонять его снова и снова, пока вы не исправите ошибку. Она начнет «сверху», если нажать комбинацию клавиш Ctrl+C, и завершится, если нажать Ctrl+C во второй раз.

Программа

multiruby
позволяет тестировать код относительно разных версий Ruby. Она входит в комплект ZenTest, но пока еще работает не очень стабильно и плохо документирована.

16.3. Работа с отладчиком Ruby

Честно говоря, отладчик Ruby не особенно популярен. Лично я им не пользуюсь и встречал не так уж много людей, которые с ним работали. Но сознавать, что он есть, приятно. Ниже приводится краткое описание работы с ним.

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

debug
— например, в командной строке:

ruby -rdebug rayfile.rb

В ответ на приглашение вида (

rdb:1
) вы можете вводить различные команды, например
list
для получения текста всей программы или ее части, step для пошагового исполнения метода и т.д. Некоторые команды перечислены в таблице 16.1 (полужирным шрифтом набраны сокращения).

Таблица 16.1. Наиболее употребительные команды отладчика

Команда Описание
<b>b</b>reak
Установить точку прерывания или получить их список.
<b>del</b>ete
Удалить все или некоторые точки прерывания.
<b>cat</b>ch
Установить точку перехвата или получить их список.
<b>s</b>tep
Вход внутрь метода.
<b>n</b>ext
Перейти к следующей строке (без захода внутрь метода).
<b>h</b>elp
Справка (вывести список всех команд).
<b>q</b>uit
Выйти из отладчика.
Перейти на страницу:
Комментариев (0)
название