и почти не могу жить без
Сообщество Rails процветает благодаря своим жемчужинам с открытым исходным кодом. Внедрение хорошо написанного, хорошо протестированного и проверенного гема может иметь значение между днями и неделями разработки новых функций.
Не каждый драгоценный камень хорош, но я хотел поделиться списком драгоценных камней, которые я использовал почти в каждом недавнем проекте SaaS, над которым я работал.
Примечание. Эта статья - отрывок из главы моей будущей книги Build A SaaS App in Rails 6. Книга проведет вас от скромных начинаний до развертывания приложения в рабочей среде. Книга находится в предварительной продаже, и вы можете получить бесплатную главу прямо сейчас!
Также вышла бета-версия моего нового проекта Pull Manager. Если вы теряете отслеживание запросов на вытягивание, у вас есть старые запросы или вам просто нужна панель управления, которая объединяет эти запросы по нескольким службам (Github, Gitlab и Bitbucket), проверьте это.
Вот 25 драгоценных камней:
- local_time - это драгоценный камень, который включает помощник просмотра и помощник javascript для отображения относительного времени (т. Е. Обновлено 2 минуты назад). Он не только отформатирует строку, но и со временем обновит строку на стороне клиента.
- devise и devise_invitable - Devise - это библиотека аутентификации, наиболее часто используемая в Rails за последние несколько лет. Несмотря на то, что есть несколько перспективных библиотек для предоставления услуг аутентификации, поддержка Devise и простота использования делают его отличным инструментом для быстрого перехода к вашему приложению SaaS. Devise Invitable - это надстройка, которая позволит вам иметь систему приглашений, чтобы пользователи приглашали других пользователей в ваше приложение.
- rolify и cancancan - Rolify позволяет приложению назначать роли, такие как Пользователь или Администратор, для объекта Пользователь. Затем CanCanCan позволяет вам брать эти роли и применять политики авторизации.
- paper_trail - это позволит вам настроить журналы аудита для определенных моделей, чтобы вы могли видеть, какие пользователи внесли изменения. Использование этой информации для отображения в вашем приложении в журнале активности или просто для устранения проблем с изменениями.
- Ranked-model - Позволяет быстро упорядочивать и сортировать одноуровневые элементы. Вместо использования последовательного целого числа он использует большие числа для более быстрой сортировки.
- bootstrap-sass - позволяет использовать структуру Bootstrap HTML / CSS для быстрого создания удобного интерфейса для приложения.
- friendly_id - используется для обфускации автоматически увеличивающегося первичного идентификатора, используемого в объектах rails из URL-адреса.
- slim-rails - вместо использования разметки HTML со встроенным кодом Ruby Slim - это еще один язык шаблонов, который позволяет писать простую разметку без необходимости в закрывающих тегах. Например:
<%- if @user.admin? %> <h1>Welcome back admin</h1> <%- else %> <h1>Welcome back pal</h1> <%- end %>
…станет
- if @user.admin? h1 | Welcome back admin - else h1 | Welcome back pal
- Sidekiq - этот гем позволяет запускать фоновые задания, поддерживаемые очередью Redis. Вместо выполнения таких задач, как отправка писем в основном цикле запроса. Вы можете перетащить его в задание Sidekiq для работы в фоновом режиме.
- kaminari - этот драгоценный камень обрабатывает нумерацию страниц и его крайние случаи. Он также включает шаблоны, которые уже работают с Bootstrap.
- Скрепка и aws-sdk - объединение этих двух драгоценных камней позволит вам загружать ресурсы, такие как изображения аватаров, через ваше приложение в AWS S3.
- Money-rails - это поможет стандартизировать общие проблемы, возникающие при расчете денег, а также предоставит несколько помощников для шаблонов.
- ransack - абстракция поиска, которая позволит вам создавать простые формы, которые могут выполнять поиск по таблицам. Например, форма поиска на странице индекса пользователей.
- Slack-notifier - простой инструмент интеграции Slack API для быстрой отправки сообщения на Slack Webhook. Tiy может использовать это для отправки уведомлений в ваш собственный Slack, когда новый пользователь регистрируется или в других областях. Вы можете использовать более подробные гемы, если со Slack требуется больше, чем интеграция с Webhook.
- premailer-rails - помогает с включением CSS в почтовые шаблоны. Gmail обычно нарушает шаблоны электронной почты из-за того, что они могут игнорировать включенный CSS. Этот гем автоматически объединяет стили в теги разметки для работы в Gmail.
- griddler - этот инструмент позволяет анализировать электронную почту, полученную через API отправки почты. Я использовал этот драгоценный камень с его гемом-компаньоном Sendgrid, но вы также можете выбрать других поставщиков электронной почты.
- Полоса прокрутки - этот гем позволяет отправлять исключения стороннему агрегатору исключений. В противном случае вам придется настроить свой собственный процесс уведомления об исключениях или тратить все свое время на просмотр журналов Rails.
- rspec-rails, factory_bot_rails, simplecov - мне лично нравится использовать RSpec вместо стандартной тестовой среды Rails. Я считаю, что легче и быстрее рассуждать о фабриках моделей, а не о приспособлениях для более сложных ассоциаций моделей. SimpleCov - это простой способ отслеживать охват тестами.
- letter_opener - этот гем будет открывать почту в браузере, а не пытаться отправить почту в среде разработки.
- Rack-cors - этот драгоценный камень поможет настроить правила CORS. Это будет полезно при доступе к запросам JSON из доменов, которые не являются доменным именем, настроенным в текущем приложении Rails. Это полезно, если в какой-то момент вашему Rails-приложению будет отправлен запрос от внешнего кода.
Это мой выбор для драгоценных камней, а какие ваши?
Хакерский полдень - это то, с чего хакеры начинают свои дни. Мы часть семьи @AMI. Сейчас мы принимаем заявки и рады обсуждать рекламные и спонсорские возможности.
Если вам понравился этот рассказ, мы рекомендуем прочитать наши Последние технические истории и Современные технические истории. До следующего раза не воспринимайте реалии мира как должное!