Ruby on Rails

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

От Java к Ruby

Программирование на Ruby действительно экономит мне очень много времени! Я могу уделять больше времени внедрению различных методов и классов, а не писать десятки строчек кода, при этом достигая такого же результата. Раньше я думал, что Java изменила всё, но перейдя на Ruby, я был очень впечатлен.

В течение года я программировал на Java, в качестве back-end разработчика, и думаю, что все, кто пользовался Java поймут, о чем я говорю.

Скажем, вы хотите создать конечную точку, которая возвращает zip-файл. Алгоритм, который будет архивировать данные в zip-файл может легко занять сотни строчек кода… но мы знаем, что придется написать ещё больше.

А что, если я скажу вам, что вы сможете сделать то же самое всего лишь несколькими десятками строчек кода?

 

О Ruby

Ruby — это объектно-ориентированный, интерпретируемый и динамический язык. На нём написано множество приложений, таких как Github и Twitter.

Давайте поговорим о достоинствах Ruby!

Ruby требует меньше кода

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

Например, у вас есть массив, вы хотите увеличить все его элементы на два, а затем вернуть их в обратном порядке. В Java код бы выглядел примерно вот так (с использованием List interface):

import java.util.*;
import java.util.stream.Stream;
import static java.util.Collections.reverseOrder;
import static java.util.stream.Collectors.toList;

public class MyClass {
    public static void main(String args[]) {
        List<Integer> list = Stream.of(1, 2, 3)
          .map(val -> val + 2)
          .sorted(reverseOrder())
          .collect(toList());

        list.forEach(System.out::println);
    }
}

А в Ruby код выглядел бы вот так:

array = Array.new(5,2)                                    
array.map { |x| x + 2 }.reverse

Как видно, кода тут гораздо меньше, и вам не нужно вводить никаких классов в начале файла!

Динамическая типизация

После того, как вы увидели разницу в коде, который нужно писать в Java и Ruby, возможно, у вас появился вопрос: почему я не устанавливал тип переменной в примере для Ruby. Ещё одним достоинством Ruby является то, что тип всех переменных задается динамически!

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

Также в Ruby уже есть множество “родных” алгоритмов, которые позволяют ускорить процесс программирования. Я очень часто пользуюсь конвертированием Hash в Array, а затем в JSON. В Ruby оно проводится всего в одну строчку!

О Rails

Rails — это самый популярный фреймворк для Ruby. Он предоставляет такой же набор функций, как и Spring для Java. Хотел бы поделиться некоторыми его фишками, которые мне больше всего понравились.

Все Rest Points в одном месте

Одной из таких фишек является то, что в Rails есть файл, в котором могу объявить все конечные точки. Я всегда могу написать$ rake routes, чтобы их увидеть. Это особенно полезно в крупных приложениях, когда вам нужно увидеть все REST-сервисы.

Также польза нахождения всех REST-точек в одном месте в том, что вы можете разделить свои конечные точки на группы! Если у вас есть модель пользователя, вы можете установить каждому из них путевое имя, и каждая конечная точка будет автоматически брать их id в качестве параметра.

Вам не придется устанавливать одинаковые конечные точки и разными параметрами или как-то конкретно их задавать. В Rails, по умолчанию, вы можете передавать конечной точке любые параметры, а затем выбирать те, что вы хотите использовать в управлении.

def user_params
  params.require(:user).permit(:name, :surname, :birth_date, :avatar)
end

Установка базы данных при помощи Rails

Все миграции записываются внутри приложения, поэтому установка вашей базы данных на разные устройства — дело всего ОДНОЙ команды:$ bundle rake db:setup. Это означает, что для установки и использования базы данных вам не нужен никакой внешний клиент.

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

В вашем приложении на Rails есть файл под названием seeds.rb, где вы можете указать все способы входа для разных моделей. Для каждой модели понадобится всего несколько строчек кода.

Команда $ bundle rake db:setupсовершает три действия:

  1. Создаёт базу данных, если её нет.
  2. Учитывает миграции.
  3. Заполняет базу данными из seed-файла.

Чистый код — только логика в сущностных классах

Чистый код в классе Active Record состоит только из алгоритмов, которые вы хотите применить, а не из атрибутов (для них у вас есть схема).

В фреймворке Hibernate для Java вам придется прописать все атрибуты с аннотациями к ним, потом вам нужно прописать метод записи для атрибутов, которые хотите изменить. И уже это займёт у вас много строчек кода.

В Rails вам не придется писать ни одной строчки! Вся ваша схема базы данных хранится в файле schema.rb, который генерируется автоматически при миграции. В классе, который представляет вашу программную сущность, вам не нужно прописывать никаких сеттеров и атрибутов. Когда вам нужно создать атрибут, вам просто стоит написать Model.attribute, и всё!

С самого начала вы сможете больше сосредоточиться на программировании и применении алгоритмов.

 

Очень лёгкое исправление ошибок

На рисунке выше показана одна из крутейших фишек Rails — исправление ошибок. Byebug — очень популярный gem в Rails, для его использования вам нужно добавить всего одну строчку в ваш gemfile. После этого вы в любой момент можете написатьbyebug, и исполнение кода остановится на строчке, где эта команда вызвана (как при точке прерывания).

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

Действительно интересно то, что вы можете обращаться к методам объектов из вашей базы данных и видеть их состояние.

 

Конечно же, это ускоряет процесс исправления ошибок! Вы можете просто использовать переменные, как обычно это делаете! А ещё мне очень нравится, что Byebug можно использовать при тестировании кода.

Вывод

С Ruby on Rails вы можете больше сосредоточиться на применении алгоритмов и логик, вместо написания сотен строк повторяющегося кода. Также он предоставляет такие инструменты, как динамическая типизация и лёгкое исправление ошибок, которые очень ускоряют процесс разработки.

Если вы хотите разрабатывать веб-приложения, вам обязательно стоит написать небольшое приложение на Rails, чтобы понять, как это работает. Даже если вы всё ещё предпочитаете использовать старые технологии, никогда не помешает расширить свои знания!

 

Перевод статьи Krzysztof Kopydłowski: Ruby on Rails = Gamechanger