В ноябре 2019 года я закончил учебный курс по разработке программного обеспечения, в рамках которого я преподавал два языка с двумя фреймворками. Разработчики программного обеспечения Flatiron закончат буткемп с практическими знаниями Ruby on Rails и Javascript с React. Тем не менее, 15-недельный буткемп едва ли может коснуться поверхности всего многообразия этих языков и фреймворков. Пока я искал работу, я решил поговорить с разработчиком, которого очень уважаю, на несколько вопросов, которые у меня были относительно шаблона MVC и некоторых лучших практик. Он прислал мне ссылку на репозиторий rails github, который создал его друг, и я заметил кое-что, чего никогда раньше не видел — во многих разных местах кода была фраза «ActiveSupport::», за которой следовала другая фраза PascalCase, например « SecurityUtils» или «Часовой пояс». Итак, я провел небольшое исследование Active Support и собираюсь написать краткое изложение того, что это такое и почему оно так полезно.

Что такое активная поддержка?

Согласно Rails Guides, Active Support — это компонент Ruby on Rails, отвечающий за предоставление расширений языка Ruby, утилит и других сквозных вещей. Но что это на самом деле означает? Это означает, что с помощью Active Support вы можете делать много интересных вещей, которые вы не можете сделать в обычном коде Ruby! Для быстрого примера метод «.first» будет работать на Ruby. Однако унаследованного от Ruby метода «.second» не существует — вот тут-то и может помочь ActiveSupport. Active Support автоматически предоставляет такие методы, как «.second», приложениям Rails. В обычном коде Ruby вы не можете использовать метод .second. В приложении rails вы можете использовать приложение .second.

Посмотрите на два следующих снимка экрана. Первый находится в irb (версия 2.6.1), а второй — в файле binding.pry в приложении rails. Обратите внимание, что Active Support автоматически предоставляет метод .second для рельсов.

Active Support предоставляет массу методов! Вот лишь некоторые из представленных методов:

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

Или даже лучше — Active Support предоставляет метод «.to_formatted_s», который позволяет сделать код более читабельным для человека.

2. from — метод from очень похож на метод slice() в Javascript. Используя from, вы можете выбрать индекс массива, и он вернет элементы из этого индекса в конец массива (включая указанный индекс).

3. beginning_of_day — это действительно классный метод, представляющий начало дня (0:00). У этого метода также есть псевдонимы, которые можно использовать, включая .midnight, .at-midnight и .at_beginning_of_day, которые также будут представлять начало дня. Посмотрите код ниже для примера.

Есть так много других! Другие примеры методов включают .gigabytes, .petabytes, .seconds, .overlaps((1..5).overlaps?(4..6) # => true), .blank?, .camelize, .dasherize, .exclude, .first(для строки), .humanize и многое другое. Все эти методы исходят из отдельного модуля или класса, и все они имеют синтаксис, аналогичный ActiveSupport::Concern

Несмотря на то, что я исследовал Active Support за последние несколько дней, я все еще не полностью разобрался со многими службами. Active Support невероятно мощная, она поставляется с Rails, и, поскольку это жемчужина, ее можно загрузить в код Ruby. Вы, ребята, должны проверить это! Если вы перейдете на https://api.rubyonrails.org/, вы увидите массу различных методов, предоставляемых Active Support. Еще одна ссылка, которая действительно может помочь вашему пониманию, — https://guides.rubyonrails.org/active_support_core_extensions.html.

Как использовать активную поддержку?

Если вы используете Ruby on Rails, Active Support — это встроенный драгоценный камень, который вы можете использовать без проблем! Приложение Ruby on Rails загружает всю Active Support, если только config.active_support.bare не равно true. Если вы не используете рельсы, вы можете загрузить Active Support прямо в код Ruby. По аналогии с принципом наименьших привилегий AWS, для того, чтобы иметь практически нулевой размер по умолчанию, Active Support по умолчанию ничего не загружает. Простое требование 'active_support' вам ничего не даст. Вам также необходимо точно указать, какое расширение вы хотите использовать. Вы можете сделать что-то вроде ниже:

и это даст вам основное расширение «.blank?», которое является методом, используемым для объектов ruby. Имейте в виду, что все в Ruby является объектом, поэтому метод «.blank?» будет работать для всего, если этот код загружен в ваш файл Ruby. Вы также можете загрузить все основные расширения, связанные с объектом, опустив спецификатор в конце требуемого идентификатора.

Вы также можете потребовать все основные расширения.

И последнее, но не менее важное: вам может потребоваться вся библиотека Active Support.

Вот так, народ! Проверьте некоторые интересные функции, предоставленные вам Active Support. Опять же, вот самая полезная ссылка, которую я нашел: https://guides.rubyonrails.org/active_support_core_extensions.html