40 найкращих дорогоцінних каменів, без яких ми не можемо жити

Спочатку ця стаття була розміщена в блозі Codica.

Сьогодні веб-розробники мають можливість отримати доступ до готових рішень замість того, щоб писати функції з нуля, що, звичайно, має великий позитивний вплив на швидкість розвитку.

Коли ми дивимось на Рубі з цієї точки зору, вона виділяється завдяки великій бібліотеці під назвою Ruby gems. Вони пропонують особливі функції для додатків Ruby, які ви створюєте. Припустимо, ви хочете мати функцію аутентифікації у вашій програмі - не потрібно писати її, ви можете отримати її у вигляді дорогоцінного каміння. І це лише один приклад серед тисяч дорогоцінних каменів Ruby, доступних безкоштовно.

У цій статті ми розкриємо найкращі дорогоцінні камені Ruby, які ми використовуємо в веб-розробці Codica, і які конкретні завдання допомагає нам виконувати.

Коштовний камінь Ruby: що за ним?

Кожен самоцвіт містить певний елемент функціональності, включаючи будь-які файли, пов'язані з цією функціональністю. За допомогою Ruby gems ви можете знайти рішення майже для будь-якого завдання, що значно скоротить час, необхідний для розробки веб-сторінок.

Ці бібліотеки мають власне сховище під назвою RubyGems, і менеджер пакунків - gem bundler. Вони обидва включають інструменти для легкого керування встановленням дорогоцінних каменів та сервером для їх розповсюдження. Перша версія RubyGems була випущена в 2004 році.

Надійна громада є одним із активів Ruby. Найактивніші ентузіасти Ruby знаходять рішення одноручно та реалізують їх у коді. Потім вони об'єднують ці бібліотеки у відкритий код, і саме тут починається життя дорогоцінних каменів.

На момент створення цієї статті загальна кількість дорогоцінних каменів становила понад 148 782.

Джерело: Rubygems.org

Така кількість готових рішень позбавляє від необхідності “винаходити колесо” кожного разу, коли ви стикаєтеся з проблемою. Знаходячись у вільному доступі, багато функцій вже написані, і вони охоплюють усі аспекти розробки: від забезпечення якості коду до розгортання.

Кращі дорогоцінні камені Ruby, якими ми користуємося

Незалежно від того, ми будуємо MVP для запуску чи реструктуризуємо багатодоменну платформу фінансової аналітики, дорогоцінні камені Ruby служать нам міцним фоном.

Ми підготували список класних дорогоцінних каменів Ruby, який є лише невеликою частиною всіх дорогоцінних каменів, які допомагають нам створювати чудові продукти.

Якість коду

Однією з основних характеристик коду є його якість та простота. Це безпосередньо впливає на швидкість та продуктивність програми. Для виявлення та видалення об’ємних блоків коду та належного проведення рефакторингу ми використовуємо дві бібліотеки.

Rubocop - це інструмент для аналізу та форматування статичного коду Ruby. Якщо ящик не використовується, він застосовуватиме багато вказівок, викладених у посібнику зі стилю Ruby. RuboCop надзвичайно гнучка, і більшість аспектів його поведінки можна налаштувати за допомогою різних параметрів конфігурації. Крім повідомлення про проблеми у вашому коді, RuboCop також може автоматично виправити деякі проблеми.

Overcommit - це дорогоцінний камінь для налаштування гаків Git. Він прекрасний для високої якості коду. Це дозволяє налаштувати git гачки для запуску лайнерів перед кожним вчиненням.

Налагодження

Якою б високою не була якість коду, іноді помилки та помилки неминучі. Щоб виявити та усунути помилки, наша команда вважає такі дорогоцінні камені досить корисними.

Better_errors - це дорогоцінний камінь для показу помилок. Він відображає корисну інформацію про помилку та має чудовий візуальний вплив. Better_errors замінює стандартну сторінку помилок Rails. Він також застосовується за межами Rails у будь-якому додатку Rack як програмне забезпечення Rack.

Byebug - це простий у використанні та багатий на функцію налагоджувач для Ruby. Цей самоцвіт дозволяє виконувати код по черзі, робити паузи між завданнями та виконувати код, змінювати змінні в ході.

Тестування

Процес веб-розробки неможливий без контролю якості створеного додатку. Тут проходить тестування, яке дозволяє оцінити якість. Для безперебійного запуску і управління тестами наша команда використовує наступні утиліти.

RSpec пропонує розвивати поведінку для Рубі. Самоцвіт забезпечує стандарти тестування додатків Ruby on Rails. Він пропонує більш читаний DSL, порівняно зі стандартною бібліотекою тестування TestUnit. Крім цього, він легко інтегрується з багатьма іншими дорогоцінними каменями, що полегшують процес тестування.

Capybara - це тестова основа прийняття веб-додатків. Він бездоганно працює в тандемі з RSpec. Самоцвіт відповідає за інтегровані тести, що імітують дії користувачів у веб-переглядачі. Це дозволяє описати сценарій авторизації в декількох рядках (перейдіть на головну сторінку, введіть логін та пароль, натисніть кнопку Увійти), запропонувавши потім різні зручні методи для налагодження тестів.

Скріншот Capybara - це дорогоцінний камінь для автоматичного збереження скріншотів, якщо сценарій Capybara не працює. Разом з Капібарою та Огірком, RSpec або Minitest, дорогоцінний камінь дозволяє переглядати вихідний код і робить знімок екрана (якщо це доречно) для кожного збою в тестовому наборі. Він зберігає HTML для невдалої сторінки та зображення скріншота (при використанні capybara-webkit, Selenium або poltergeist). Такий варіант є досить цінним, коли потрібно знайти проблему в невдалих раундах.

Parallel_tests змушує тести, написані в TestUnit, RSpec і Cucumber, проходять швидше, запускаючи їх паралельно на декількох процесорах. Для прискорення процесу код використовує всі ядра систем. Він виконує тест і використовує додаткові тестові бази даних. Самоцвіт підтримує Rails та інші рамки Ruby.

Factory Bot - це бібліотека для встановлення об'єктів Ruby як тестових даних. Він має синтаксис прямого визначення. Бібліотека підтримує такі декілька стратегій збирання, як збережені екземпляри, незбережені екземпляри, хеши атрибутів та заглушені об'єкти. Крім того, він забезпечує підтримку численних заводів одного класу (користувач, адміністратор_користувача), включаючи спадкове виробництво.

Chromedriver_helper забезпечує просту установку та використання Chromeedriver. Крім того, він служить адаптером веб-драйвера селену проекту Chromium. Він встановлює виконуваний помічник хромедрівера в дорогоцінний шлях, що дозволяє Selenium викликати його як веб-драйвер. За потреби сценарій завантажить відповідний бінарний файл для платформи та встановить його в ~ / .chromedriver-helper, після чого виконає його. Тут дорогоцінний камінь дозволяє певним проектам навіть вибирати, яку версію хромодрука вони хочуть запустити.

Shoulda Matchers - це дорогоцінний камінь, що надає прості однолінійні тести для загальної функції Rails, що прискорює написання тестів для типової ємності.

Simplecov - одна з корисних дорогоцінних каменів для тестування. Він показує відсоток коду, покритого одиничними тестами. Таким чином, дорогоцінний камінь спонукає розробників писати 100% перевірений код, що значно покращує його якість.

Cleaner Database Cleaner забезпечує охоплення кодом для Ruby 1.9+ з потужною бібліотекою конфігурацій та автоматичним об'єднанням покриття в тестові набори. Він часто застосовується в тандемі з RSpec і використовується для очищення тестової бази даних при запуску тестів. Самоцвіт дозволяє налаштувати час очищення бази даних: перед запуском тестів, до / після запуску кожного тесту.

RSpec :: Retry - це інструмент, який забезпечує: повторити спробу випадково невдалого прикладу RSpec. Він додає: параметр повтору для періодично відмовних моделей RSpec. Якщо модель має параметр: повторити, RSpec повторить приклад певну кількість разів, поки шаблон не працює.

Faker - це бібліотека для генерування демо-даних, таких як імена, адреси та номери телефонів.

Розгортання

Розгортання є важливим етапом розвитку веб-сторінок, і є одна бібліотека, яка допомагає нам безперебійно працювати.

Mina - швидкий інструмент автоматичного розгортання та сервера. Порівняно з Capistrano, який є інструментом автоматизованого віддаленого сервера, Mina працює набагато швидше. Він генерує всю процедуру як сценарій Bash і запускає її віддалено на сервері. На відміну від Capistrano, де кожна команда виконується окремо на власних сесіях SSH, Mina створює один сеанс SSH на розгортання. Це мінімізує навантаження на з'єднання SSH.

До речі, в Codica ми створили власний інструмент для Mina, який називається mina-multideploy. Це дозволяє паралельно розгортати програми на декількох серверах.

Аутентифікація та авторизація

Більшість веб-рішень потребують системи автентифікації та авторизації. Будь то сайт електронної комерції чи видавнича платформа, захист даних користувачів завжди займає перше місце. Для реалізації безпечного рішення ми використовуємо кілька дорогоцінних каменів.

Devise - це гнучке рішення для аутентифікації для Rails на базі Warden. Devise допомагає побудувати ідентифікаційну систему будь-якого рівня складності - від автентифікації електронною поштою та паролем до реферальної системи. У двох словах, він має 10 модулів, включаючи:

  • Підтверджується: надсилає електронні листи з інструкціями для підтвердження та перевіряє, чи обліковий запис уже підтверджено під час входу;
  • Відновлення: скидає пароль користувача та надсилає інструкції щодо скидання;
  • Запам'ятовується: керує генерацією маркера та очищенням запам'ятовування користувача від збереженого файлу cookie;
  • Відстеження: відстежує обліковий запис для входу, часові позначки та IP-адресу.

Коштовний камінь Ruby-JWT - це проста Ruby реалізація стандарту WebCen RFC 7519 OAuth JSON (JWT). Як інструмент для перевірки автентичності користувача, він вважається однією з найбезпечніших систем передачі інформації між двома сторонами.

У цій схемі сервер додатків налаштований для перевірки, чи є вхідний JWT тим, що генерується з сервером аутентифікації.

CanCanCan - це супер-зручний дорогоцінний камінь. Це дозволяє створювати та керувати ролями та правилами користувачів у додатках, надаючи набір помічників для перегляду та контролерів. Навіть файл sposobnosti.rb у каталозі моделі може містити зрозумілу та читану інструкцію з описом прав для кожної групи користувачів. Він плавно взаємодіє з дорогоцінними каменями, забезпечуючи аутентифікацію користувачів.

OmniAuth - це гнучка система аутентифікації, що використовує програмне забезпечення Rack. Це бібліотека, що дозволяє генерувати провайдерів для аутентифікації через облікові записи соціальних мереж, наприклад Google або Facebook. Бібліотека вже містить широкий перелік готових до використання постачальників.

Завантаження файлів

Іноді нам потрібно створити веб-програми, які дозволяють користувачам завантажувати різні види файлів, як-от документація чи зображення. Щоб зробити цю функцію максимально корисною та зручною для користувачів, ми застосовуємо кілька бібліотек.

Carrierwave - відмінне рішення для завантаження та обробки файлів для веб-рамок Rails, Sinatra та інших Ruby. Carrierwave дозволяє створювати версії, додавати, видаляти та завантажувати їх з віддаленого місця. Крім того, у нього є параметри тестування та налаштування. Carrierwave gem працює з AWS S3, і в таких випадках він добре поєднується з каменем Fog, який інтегрується з великою різноманітністю хмарних серверів, включаючи Rackspace серверів та Brightbox.

Carrierwave_backgrounder працює з операційною хвилею. Це дозволяє переміщувати зображення або стискати зображення на другий план. Наразі він підтримує затримку роботи, Resque, Sidekiq, SuckerPunch, Girl Friday, Qu та Queue Classic.

MiniMagick служить міні-заміною для RMagick. Самоцвіт дозволяє зменшити Рубі обробляє пам'ять. Це робить доступними всі параметри командного рядка ImageMagick.

Пошук

У деяких проектах обсяг інформації занадто великий. У цьому випадку пошук необхідних даних може бути складним завданням. Щоб виконати параметр пошуку максимально зручним для користувача, ми скористаємося однією утилітою.

Elasticsearch - популярна система пошуку, яка широко використовується на підприємствах. Самоцвіт інтегрує двигун Elasticsearch в додатки Rails із своїм повним набором функцій, включаючи повнотекстовий пошук.

Панелі адміністраторів

Створення та надання великої веб-програми зазвичай передбачає управління великою кількістю даних. Наступні утиліти допомагають нашій команді реалізувати всебічний інструмент адміністрування баз даних.

Activeadmin - це адміністративна основа для додатків Ruby on Rails. Плагін дозволяє генерувати інтерфейси стилю адміністрування. Він розділяє загальні моделі ділових додатків, різко спрощуючи реалізацію елегантних інтерфейсів для розробників.

Адміністратор - двигун Rails. Це допомагає створити адміністративну панель управління адміністратора. Наразі ми його ще не використовували, хоча ми вивчаємо його можливості та сподіваємось втілити її у наші майбутні проекти.

Більш дивовижні дорогоцінні камені для різних завдань

І як бонус, ми виділимо для вас додаткові дорогоцінні камені, які можуть вам бути цікавими. Перерахуємо їх відповідно до їх популярності (кількість зірок на Github).

Sidekiq - це простий та ефективний інструмент обробки фону для Ruby. Він застосовує потоки для управління багатьма функціями в одному і тому ж процесі одночасно. Хоча Sidekiq не вимагає Rails, він буде тісно поєднуватися з Rails, щоб максимально спростити обробку фону.

Simple_form - це дорогоцінний камінь, який додає зручний DSL для побудови форм на Rails. Він пов'язаний з простим DSL, не маючи думки щодо розмітки. Simple Form фокусується на гнучкості та допомозі в ефективних деталях для формування форм. Основна мета Simple Form - підтримувати основний метод визначення макету, що дозволяє розробникам знаходити найбільш візуально приємний дизайн коду. Більша частина DSL була похідна від Formtastic.

Friendly_Id надає велику допомогу під час роботи з плагінами постійної посилання для ActiveRecord. Це дозволяє створити читабельні гарні URL-адреси та керувати зручними для людини рядками так, ніби вони були цифровими ідентифікаторами для моделей ActiveRecord.

Dotenv-rails - це дорогоцінний камінь Ruby для завантаження змінних середовища з dotfile, який може знаходитися за межами основної папки проекту. Таким чином, Dotenv дозволяє безпечно зберігати дані конфігурації додатків.

Slim - це мова шаблону, що намагається зменшити синтаксис до основних елементів коду, не стаючи загадковим. Він розпочався як вправа, щоб побачити, скільки можна видалити зі стандартного HTML-шаблону (<,>, теги закриття тощо). Чим більше людей проявляли інтерес до Slim, тим більше функціональних можливостей зростало разом із гнучкістю синтаксису.

Draper додає об'єктно-орієнтований шар логіки презентації до програми Rails. Draper допомагає розібратися з цією функціональністю в потоці процедурних помічників або додати групу до моделей. Декоратори Draper пропонують більш ефективний спосіб обернути моделі за допомогою логіки, пов'язаної з презентацією, щоб організувати - і протестувати - цей шар їх програми.

Redis - це ліцензована BSD бібліотека з відкритим кодом для клієнтів Ruby. Він являє собою сховище структури даних в пам'яті. Самоцвіт використовується як база даних, кеш-пам'ять та брокер повідомлень. Redis забезпечує підтримку структур даних, таких як рядки, хеші, списки, набори, відсортовані набори з запитами діапазону, растрові карти, гіперлогі, геопросторові індекси з радіусними запитами та потоками. Самоцвіт включає вбудовану реплікацію, сценарії Lua, виселення LRU, транзакції та кілька рівнів збереження на диску. Крім того, Redis дозволяє забезпечити високу доступність через Redis Sentinel та автоматичну секціонування з Redis Cluster.

Анотація спрощує роботу з моделями Rails. Він додає коментар, який підсумовує поточну схему до файлів моделей. Ця функція значно спрощує створення коду, оскільки не потрібно перевіряти файл схеми кожен раз.

При застосуванні повнотекстового пошуку PostgreSQL Pg_search створює області дії з ім'ям ActiveRecord. Це цілком гідна альтернатива Elasticsearch при використанні PostgreSQL. Утиліту легко налаштувати. Крім того, це дозволяє здійснювати автозаповнення та пошук за асоціаціями.

Злий служить для побудови покрокових сторінок (форми створення об’єктів тощо). Wicked прискорює та спрощує роботу з контролерами.

Конфіг пропонує найпростіший спосіб поєднання налаштувань ямлі з кількома середовищами з Rails, Sinatra, Pandrino та іншими особами Ruby. Він пропонує привабливе і просте рішення для простого управління параметрами середовища.

I18n- завдання - це дорогоцінний камінь для роботи з перекладом у додатку. Його можна застосувати до будь-якого проекту, в якому використовується дорогоцінний камінь Ruby I18n, який за замовчуванням використовується в Rails. Він надає інтерфейс для роботи з локалями, допомагає знайти відсутні файли, нормалізувати файли з перекладами та додавати нові переклади за допомогою Google translate API.

Money_rails - це чудовий камінь для роботи з валютами. Це дозволяє автоматизувати оновлення валютних курсів і конвертувати ціни в необхідну валюту.

Імпресіоніст дозволяє рахувати перегляди сторінок. Крім того, він дозволяє вести журнал перегляду сторінок багато разів за запит і присвоювати його моделі. Її мета - надати настроювані статистичні дані, роблячи його миттєвим доступним у додатку, на відміну від Google Analytics та витягування даних із їх API. Крім того, імпресіоніст дозволяє призначити власні повідомлення переглядам сторінок.

Route_translator - це інструмент, який допомагає адмініструвати переклади маршрутів додатків. Він має простий формат словника. Спочатку це був роздрібний плагін translate_routes, але згодом перетворився на повноцінний інструмент перекладу.

Прийти до висновку

У Codica ми цінуємо Рубі за всі її особливості, такі як фокус, чіткість та відмінна читабельність мови, яку часто вважають подібною до людини. Камені Ruby значно доповнюють переваги Ruby, оскільки вони забезпечують високу швидкість розвитку для будь-якого типу проекту.

Камені, які ми перерахували в цій статті, допомагають нам створити чудові продукти для різних сфер, таких як електронна комерція, подорожі, фінанси, інвестиції та інші.

Звичайно, є тисячі дорогоцінних каменів Рубі, і кожен з них має велику цінність. Навіть маючи багаторічний досвід роботи в Ruby, ми відкриваємо все більш корисні дорогоцінні камені Ruby та можливості, які вони надають. Завжди є можливість для вдосконалення.

Ми сподіваємося, що наш дорогоцінний список Ruby on Rails допоможе вам у ваших проектах.

Спочатку опубліковано на сайті www.codica.com.

Детальніше про Ruby on Rails:

Подобається наш контент? Дізнайтеся більше на нашому веб-сайті: