Как стать автором
Обновить
0
Skillbox
Образовательная платформа Skillbox

Чем хорош Ruby on Rails и как он ускоряет разработку

Время на прочтение4 мин
Количество просмотров43K


Этот пост — перевод статьи программиста Кшиштофа Копидловски, посвященной разбору преимуществ Ruby on Rails. Материал будет интересен в первую очередь начинающим программистам и уж затем — профессионалам.

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

Skillbox рекомендует: Практический курс «Профессия веб-разработчик».

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

От Java к Ruby


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

Примерно год я пишу на Java и занимаюсь backend-разработкой. Мне кажется, что любой программист, работающий с этим языком, поймет то, о чем я говорю. Предположим, вы хотите написать конечную точку для возврата .zip-файла. Решить эту задачу можно без особых проблем, но для этого необходимы сотни строк кода.

Но что, если я скажу вам, что можно обойтись и несколькими десятками строк?



Это Ruby — объектно-ориентированный, динамический, рефлективный, интерпретируемый высокоуровневый язык программирования. Он обладает независимой от операционной системы реализацией многопоточности, сильной динамической типизацией, сборщиком мусора и многими другими возможностями. На нем написано множество веб-приложений, среди которых GitHub и Twitter.

Ruby позволяет сократить объем кода


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

Например, если у вас есть массив и вы хотите увеличить все элементы на 2, а затем вернуть их в обратном порядке в Java, код будет похож на этот (с использованием интерфейса List):

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


Разница налицо. И вам не нужно импортировать классы.

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


После того как мы убедились в том, что строк кода может быть действительно не слишком много, можно задуматься о том, что в примере выше не задан тип переменной. Это действительно так — дело в том, что в Ruby все переменные динамически типизированы.

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

В Ruby также есть множество собственных методов, которые позволяют ускорить кодинг. При написании программ я чаще всего использую преобразование Hash в Array, а затем в JSON. В Ruby я могу выполнить его всего одной строкой!

On Rails


Наиболее популярный фреймворк для Ruby — Rails. Он обеспечивает примерно такую же функциональность для языка, как Spring для Java. Я хотел бы поделиться некоторыми своими находками, которые могут вам пригодиться.

Все endpoints в одном месте

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

Кроме того, вы можете разделить ваши endpoints на группы. К примеру, когда у вас есть модель User, вы можете установить пути для всех ее членов таким образом, чтобы каждый endpoint автоматически получал свой идентификатор.

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

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


Базы данных Rails

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

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

Команда $ bundle rake db:setup выполняет три функции:

  • Создает базу данных, если ее еще нет;
  • Запускает все миграции;
  • Заносит все исходные данные из вашего seed-файла.

Код действительно чистый: в ActiveRecords просто записываются методы, которые вам необходимо реализовать, а не атрибуты.

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

В Rails то же самое занимает одну строку. DB Schema сохраняется в файле schema.rb, который автоматически создается при запуске миграции. И в классе не нужны сеттеры или атрибуты. Когда потребуются последние, достаточно будет написать: Model.attribute — и это все.

Как уже говорилось выше, с Rails вы можете фокусироваться именно на логике и методах вашего проекта, а не на коде.



Заключение


Ruby on Rails дает вам мощные инструменты вроде динамической типизации или byebugging, которые неплохо ускоряют процесс программирования.

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

Теги:
Хабы:
-4
Комментарии21

Публикации

Изменить настройки темы

Информация

Сайт
skillbox.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия

Истории