Наш чатик

Телеграм чат начинающих программистов. Общаемся и помогаем друг другу

Если ссылка не открывается, можно найти нас в поиске по чатам @rubyrush или пойти другими путем

Среда разработки RubyMine

Этот урок про IDE (по-русски, среда разработки): установим и научимся пользоваться средой разработки RubyMine, поймём чем она отличается от текстового редактора Sublime.

План урока

  1. Что такое IDE (среда разработки)?
  2. Установка RubyMine
  3. Настройка RubyMine
  4. Разбираемся с русскими символами и кодировками
  5. Создаем первый проект в RubyMine

### Что такое IDE?

Если подойти к вопросу формально, то IDE — это Integrated Development Environment, или интегрированная среда разработки. Другими словами, это рабочее место разработчика, внутри которого у него под рукой будут все необходимые ему инструменты: редактор файлов, консоль, просмотр папок проекта и т. д.

Прямо как верстак плотника:

Удобное рабочее место

Основные функции IDE:

Во-первых, это текстовый редактор. Вы уже знаете про Sublime, он тоже очень удобный, красивый и функциональный. В любой IDE есть подсветка кода, а также проверка его на ошибки «на лету».

Во-вторых, в IDE, как правило, встроена консоль: вам не придётся переключаться между окнами, теряя на этом время. Файлы сохраняются автоматически, а запуск программы — нажатие одной клавиши. Плюс , конечно же, горячие клавиши, чтобы всё получалось ещё быстрее.

В-третьих, вы прямо в IDE видите структуру вашей программы. Без этого просто никуда, если программа у вас сложная. Вам не нужно переключаться в менеджер файлов (проводник в Windows) и искать нужный файл. Весь ваш проект постоянно у вас под рукой.

В-четвёртых, в течение этого курса мы расскажем вам о таких инструментах как отладчик, тесты и система контроля версий. Все эти инструменты (а также многие другие) можно встроить в IDE, о которой мы вам сегодня расскажем.

Установка RubyMine

Давайте, наконец, поставим себе IDE для разработки на Ruby — RubyMine. Для установки RubyMine на компьютер с Windows вам понадобится установленный ruby-installer и умение пользоваться консолью.

RubyMine

IDE бывают разные. Выбор IDE чаще всего зависит от того языка, на котором вы работаете. Для Ruby есть несколько вариантов, которые относительно популярны: NetBeans, Komodo и RubyMine, на которой мы сегодня и сосредоточимся.

Мы выбрали RubyMine во-первых, потому что он максимально заточен под разработку на ruby. Во-вторых, потому что он основан на среде разработки IntelliJ IDEA, которая является самой удобной IDE из всех существующих на данный момент. И в-третьих, её разработали наши, питерские ребята из JetBrains.

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

Пробная версия RubyMine длится 30 дней (чего вам вполне хватит для того, чтобы пройти курс). А если решите купить эту систему — это будет не самым плохим вложением денег.

ВАЖНО! Все задания и программы курса работают и без RubyMine. Так что наличие этой среды у вас желательно, но не обязательно.

Для установки RubyMine её необходимо скачать с официального сайта:

https://www.jetbrains.com/ruby/

В RubyMine можно работать под любой операционной системой. Сайт сам определит, какая у вас операционная система и предложит скачать именно нужный дистрибутив.

После этого, как обычно устанавливаем программу:

Установка RubyMine

Что такое проект?

После установки RubyMine предложит вам создать проект:

Как на счёт нового проекта?

Для удобства в IDE принято выделять любую программу в проект. Проект логически объединяет все файлы одной программы и позволяет удобно их просматривать и открывать.

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

Проект «Монетка»

Давайте создадим наш первый проект. Для начала создайте на диске новую папку rubytut2, в которой мы будем хранить все наши проекты для второго курса. В этой папке создайте папку lesson1. А затем создайте в RubyMine новый проект. Для этого выберите в меню запуска Create New Project и укажите путь к новому проекту:

C:\rubytut2\lesson1\coin

После создания нового проекта в папке lesson1 появится папка coin. Скопируйте туда файлы из вашего домашнего задания к 4-му уроку базового блока или возьмите их из материалов к этому уроку.

# Сгенерим случайное число от 0 до 10 тем же методом rand
if (rand(11) == 10)
  # Если случилось чудо и из 11 вариантов (0,1,2,3,4,5,6,7,8,9,10) выпал наибольший...
  puts "Ребро"
else
  # Если чуда не произошло, снова выбираем один из двух вариантов
  if (rand(2) == 1)
    puts "Решка"
  else
    puts "Орел"
  end
end

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

Проект «Монетка» в RubyMine

Вы увидите консоль RubyMine.

Настройка RubyMine

Давайте немного настроим RubyMine, чтобы нам было поудобнее работать. Для этого можно либо выбрать в меню File → Settings, либо нажать Ctrl + Alt + S.

Найдите настройки шрифтов, вбив в поисковой строке слово font. Вы увидите что-то подобное:

Настройка шрифтов в RubyMine

Загляните также во вкладку Appearance:

Настройка внешнего вида RubyMine

А также настройте внешний вид консоли:

Настройка внешнего вида консоли в RubyMine

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

Что такое кодировки?

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

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

Подробнее про кодировки можно почитать на Википедии.

А пока, простой пример:

Рассмотрим три кодировки, которые можно использовать для кодирования русских символов: CP1251 — стандартная кодировка Windows для кириллицы, CP866 — кодировка IBM для кириллицы и KOI8-R — кодировка для русских символов, разработанная в СССР. А также рассмотрим кодировку UTF-8, в которой есть не только русский язык, но и многое другое.

Вот какие коды нужно использовать для того, чтобы закодировать слово cat, набранное, конечно же, латиницей, в каждой из этих кодировок:

Кодировка CP866 CP1251 KOI8-R UTF-8
Код символа c 0x63 0x63 0x63 0x63
Код символа a 0x61 0x61 0x61 0x61
Код символа t 0x74 0x74 0x74 0x74

Обратили внимание, что символы для всех трёх букв совпадают? То же самое будет и с любой латинской буквой. При разработке каждой из этих кодировок (слава Богу) учли, что для того, чтобы они были совместимы, неплохо бы закодировать латинские символы одинаковыми числами. Нижняя часть вышеперечисленных таблиц кодировки полностью соответствует самой первой кодировке ASCII.

Давайте же посмотрим, что происходит с русскими буквами:

Кодировка CP866 CP1251 KOI8-R UTF-8
Код символа ж 0xA6 0xE6 0xD6 0xD0B6
Код символа о 0xAE 0xEE 0xCF 0xD0BE
Код символа п 0xAF 0xEF 0xD0 0xD0BF
Код символа а 0xA0 0xE0 0xC1 0xD0B0

Как видите, всё не так однозначно. Именно поэтому вы часто видите кракозябры на своих компьютерах. Фактически, шифровку, которую вам передают ребята из соседнего двора (с другого сайта или одна программа — другой), ваш компьютер расшифровывает неправильно. Ваш компьютер видит число и предполагает, что кодировка одна (допустим cp1251), а тот, кто это число создавал (другой компьютер или ваша собственная программа), предполагал другую кодировку, например UTF-8. Поэтому при преобразовании чисел в символы происходят ошибки и вместо нужных символов выводятся другие.

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

Настройка кодировки UTF-8 в RubyMine

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

Внимательно повторите все шаги!

Во-первых, настройте кодировку консоли Windows. Для этого в Панели инструментов выберите настройку языков. Во вкладке Дополнительно нажмите кнопку Изменить язык системы и выберите там Русский (Россия). После этого придётся перезагрузить компьютер.

Настройка кодировки консоли в Windows

После перезагрузки компьютера откройте командную строку и выполните команду chcp. Если вы всё настроили правильно, то вы увидите надпись

> chcp
Текущая кодовая страница: 866

Во-вторых, настроим кодировки в RubyMine. Откройте настройки (File -> Settings) и найдите там настройки кодировок (File Encodings).

Установите кодировку UTF-8 для проектов (Project Encoding) и для файлов настроек по умолчанию (Default encoding for properties files).

Внимание, теперь для самой среды разработки (IDE Encoding) выберите кодировку IBM866. Это важно, т.к. мы настроили нашу консоль для работы именно с этой кодировкой.

Настройка кодировок в RubyMine

В-третьих, в тексте наших программ нам необходимо будет каждый раз (увы!) вставлять в самом начале вот такой код, если мы собираемся использовать русские буквы (как для вывода информации, так и в случае, если хотим, чтобы пользователь имел возможность вводить русские символы).

# XXX/ Этот код необходим только при использовании русских букв на Windows
if (Gem.win_platform?)
  Encoding.default_external = Encoding.find(Encoding.locale_charmap)
  Encoding.default_internal = __ENCODING__

  [STDIN, STDOUT].each do |io|
    io.set_encoding(Encoding.default_external, Encoding.default_internal)
  end
end
# /XXX

Экспортируем проект «Виселица»

Теперь, когда мы настроили кодировки, можем экспортировать нашу «Виселицу» и не бояться, что у нас будут проблемы с отображением русских символов.

Скопируйте программу viselitsa (из материалов к этому уроку или из 14-го урока) в нашу папку урока rubytut2/lesson1. В RubyMine выберите File -> Open и укажите путь к нашей «Виселице».

Открываем проект «Виселица»

Теперь вы видите структуру проекта: все файлы и папки с данными (data, images):

Структура проекта «Виселица»

Откройте файлы в редакторе RubyMine, освойтесь. Посмотрите, как всё круто и удобно.

Проект 'Виселица' в RubyMine

Важно! Обратите внимание, как мы поменяли в тексте программы подключение файлов в проект с помощью команды require_ralative. Это необходимо сделать, чтобы программу можно было запускать из RubyMine. Ну и вообще, так подключать файлы более правильно..

# HOВЫЙ способ подключать файлы независимо от папки из которой запускается программа!
# Работает начиная с Руби 1.9
require_relative "game.rb"
require_relative "result_printer.rb"
require_relative "word_reader.rb"

current_path = File.dirname(__FILE__)

Как замените require на require_relative и уберёте './' из строки current_path, запустите «Виселицу»: кликните по файлу main.rb в проводнике RubyMine правой кнопкой мыши и выберите Run. Как наиграетесь, переходите к следующему уроку :)

А в следующем уроке мы узнаем, что такое система контроля версий, познакомимся с git и научимся с его помощью правильно хранить наши программы.