Ruby
Знакомство с языком Ruby
Проверка версии ruby
Обновление ruby
Установка нужной версии ruby
Вывод сообщений в консоль
print
- выводит строку без переносов (можно в конце указать \n
)
puts
- выводит строку и ставит перенос на следующую строку
Переменные и типы данных
В ruby присутствует 5 типов данных:
- int
- float
- string
- boolean
- nil
Строки и математические действия
downcase
- приводит в нижний регистрupcase
- приводит в верхний регистрstrip
- убирает пробелыlength
- выводит длинуinclude
? - позволяет проверить, включает ли переменная данное значение
У нас есть все основные операции, которые есть и в других языках.
Стоит отметить, что в puts мы складываем сейчас два разных типа данных, поэтому второй аргумент мы приводим к строке через to_s
Получение данных от пользователя
С помощью функции gets
мы можем в консоли получить текст от пользователя
И тут мы сразу получаем значения и переводим их в числа через to_i
или to_f
Массивы и ассоциативные массивы
Массивы создаются через ключевое слово Array
.
Ассоциативные массивы создаются внутри {}
и пары ключ-значение заносятся через =>
Методы и оператор return
Методы объявляются через оператор def
Условные операторы
Оператор if
используется для выполнения блока кода, если заданное условие истинно
Оператор unless
используется для выполнения блока кода, если заданное условие ложно
Цикл While и цикл For
Цикл while
выполняет блок кода, пока заданное условие истинно
Цикл for
используется для выполнения блока кода для каждого элемента в заданном наборе
В Ruby цикл for
часто заменяется циклом each
Работа с файлами (чтение и запись)
Для чтения содержимого файла в Ruby используется класс File
Пример построчного вывода строк из файла:
В этом примере, мы открываем файл с именем “file.txt” в режиме чтения ("r"
) и используем метод each_line
, чтобы прочитать файл построчно. Затем мы выводим каждую строку на экран.
Для записи данных в файл также используется класс File
. Вот пример, как записать строки в файл:
В этом примере мы открываем файл с именем “file.txt” в режиме записи ("w"
) и используем метод puts
для записи строк в файл
Когда мы работаем с файлом, важно закрыть его после окончания операций чтения или записи. Однако, в примерах выше использован блок do..end
, который позволяет автоматически закрыть файл после выполнения кода в блоке. Это удобно и гарантирует правильное закрытие файла.
Также можно использовать методы File.read
и File.write
для чтения и записи файлов соответственно.
Отслеживание ошибок
В Ruby можно сгенерировать исключение с помощью ключевого слова raise
. Оно может принимать опциональный параметр — класс исключения или объект исключения.
Для обработки исключений в Ruby используется конструкция begin..rescue..ensure
:
В блоке begin
содержится код, который может вызвать исключение. Если исключение возникает, выполнение программы переходит в блок rescue
с соответствующим типом исключения. Если исключений не возникает, выполняется блок else
. Блок ensure
выполняется всегда, независимо от наличия исключений
В этом примере, деление на ноль вызовет исключение ZeroDivisionError
, которое будет перехвачено блоком rescue
, и будет выведено сообщение “Поймано исключение: деление на ноль”.
Если нужно перехватить все исключения, вы можете использовать блок rescue
без указания конкретного типа исключения
Объекты и классы (ООП)
Классы объявляются с помощью ключевого слова class
. Конструктор вызывается с помощью initialize
. Чтобы инициализировать новый инстанс класса, нужно записать Имя_класса.new(значения для конструктора)
Применение символа @
перед именем переменной в Ruby позволяет ей стать экземплярной переменной, которая будет доступна в пределах текущего объекта класса
С помощью attr_accessor
мы указываем те поля, которые будут присутствовать в классе (так же можно их не указывать, если мы сразу будем их инициализировать в конструкторе)
Наследование, модули
Класс может наследовать свойства и методы от другого класса, который называется «родительским» или «суперклассом», используя ключевое слово class
и оператор <
Импорты
Первый файл с классом
file1.rb
И далее, во втором файле, мы используем require_relative
которым и импортируем файл целиком, чтобы использовать его внутри целевого модуля
file2.rb
Ruby on Rails
Основы, установка, структура проекта
Первым шагом вам нужно установить Ruby на свой компьютер. Можно скачать установщик Ruby с официального сайта ruby-lang.org.
Далее нужно установить Rails Rails:
Далее нужно создать новое приложение
И запустить сервер
Рельсы работают по самому обычному принципу для бэкэнд-приложений:
- веб-сервер получает запрос от пользователя
- далее этот запрос попадает в роутер, который определяет, в какой контроллер должен попасть запрос
- контроллер связан с Model тех данных, с которыми будут происходить операции и с View, который отвечает за связывание моделей с их отображением и уходом к конечному пользователю
При первом создании приложения, у нас генерируется огромная структура:
- app - хранит весь код приложения
- bin - хранит все исполняемые файлы
- config - хранит
routes.rb
, который хранит те настройки, какой роут каким контроллером обрабатывать + там находятся конфиги - db - тут хранятся миграции баз данных
- lib - хранятся руби-файлы
- log - логи сервера
- public - лежит то, что публично будет отдаваться с сервера
- storage - туда будут загружаться файлы пользователей
- test - тесты приложений
- tmp - тут хранятся временные файлы
- vendor - тут хранятся файлы внешние библиотеки не из руби
Rakefile
- файл с кастомными задачами, которые можно запускать в проектеconfig.ru
- файл, который описывает, как запускать приложение
Вот пример того, что отдаёт сервер на фронт
Совет:
Файл
.ruby-verison
следует удалить и версию руби внутриGemfile
тоже стоит удалить, чтобы не было проблем у пакетов с разными версиями руби
Модели, миграции, ORM, CRUD
Каждая модель у нас отвечает за таблицу в базе данных
Для генерации модели
После создания каждой модели, у нас в db/migrate
создаются миграции, которые пойдут на сервер
Далее очень важной частью являются миграции. Миграции описывают структуру изменений в БД.