Сообщения об ошибках Ruby, также известные как Sloth Fratelli

лучший друг Ruby-программиста

Хорошо, я буду первым, кто признается, что я не совсем помню все, что происходило в фильме Балбесы, и если вы прекратите читать прямо здесь, мне невероятно жаль. Я помню одну вещь: был парень, который выглядел кошмарно страшным и ужасающим, но в итоге стал одним из самых удивительных персонажей фильма. Его звали Лотни «Ленивец» Фрателли. И он был начальником.

Как я уже говорил, Ленивец изображается как ужасный монстр, которого дети пытаются избегать. К концу фильма (***ВНИМАНИЕ, СПОЙЛЕР***) Ленивец носит пиратскую шляпу и срывает с себя унылую коричневую рубашку, обнажая самую стильную рубашку Супермена из 90-х, которую когда-либо видел этот мир.

Когда я впервые начал программировать на Ruby, сообщения об ошибках были точно такими же. Я мог ошибиться в написании переменной, забыть поставить конец, сделать что-то, что я считал относительно небольшим, и Ruby отправлял ошибку, которая заставляла меня чувствовать, что меня только что поразили боги Ruby. Затем я увидел свет… Я действительно решил посмотреть, что на самом деле говорили мне эти, казалось бы, длинные и ненавистные сообщения, и в итоге они оказались такими же «рубиновыми», как и любой другой аспект Ruby.

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

Вот пример основного сообщения об ошибке Ruby:

lib/greeting_the_world.rb:3:in `<main>': undefined local variable or method `hello_world' for main:Object (NameError)

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

lib/greeting_the_world.rb:3:in `<main>':

Это говорит о том, в каком именно файле и где в файле возникает ошибка. Ошибка возникает в файле с именем lib/greeting_the_world.rb в строке 3. Серьезно? Руби только что сказал нам, в какой именно строке ошибка? Спасибо, Мац. ‹main› — это область, в которой возникает ошибка (если это ничего не значит для вас, как для новичка, здесь — хорошее небольшое объяснение областей Ruby). Продолжаем треккинг.

undefined local variable or method `hello_world' for main:Object

Это способ Ruby сообщить вам, что, по его мнению, пошло не так. Ruby (обычно) довольно хорошо рассказывает вам, почему ваш код только что сломался. Подобная ошибка может возникнуть, если вы попытаетесь вызвать переменную «hello_world», когда эта переменная не существует. Скорее всего, вы увидите много таких. К последней части.

(NameError)

Это довольно информативная часть ошибки. Это показывает тип ошибки, которая была. Ошибка NameError вызывается, когда заданное имя недействительно или не определено, о чем Ruby пытался сообщить нам ранее в сообщении. Как я уже говорил, все стандартные типы ошибок Ruby можно найти здесь. Если вы когда-нибудь увидите ошибку и не поймете, о чем она говорит, идите туда. Это для вашего счастья.

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