rails

A collection of 22 posts
ruby

Ruby: nil? empty? blank? present?

В Ruby on Rails доступны несколько методов для проверки существования значения или состояния объекта. Ruby предлагает nil?, empty? и Rails добавляет blank? и present?. Каждый из методов имеет свою логику и назначение. И конечно предполагает применение в нужном контексте. nil? Метод класса Object в Ruby. Что означает его повсеместную доступность.
1 min read
Rails 7.0 - Релиз
rails

Rails 7.0 - Релиз

Свершилось. 15 декабря 2021 года официально вышел Rails 7.0. Основный посыл -  упрощение работы над современными веб-приложения. Это достаточно масштабный переход. Так же обновилась главная страница сайта. А DHH записал новые видео. * Комментарии к релизу Факты * Более 600 человек участвуют в разработке и поддержке кода Rails. * Rails это фреймворк
Rails 7 (RC1)
rails

Rails 7 (RC1)

И так,  6 декабря 2021 года представлен релиз-кандидат Rails 7. И команда разработки готова в скором времени готова объявить о завершении работы над новой версией Rails 7. С момента альфа версии было исправлено множество проблем. Если все пойдет по плану, то мы увидим финальный релиз Rails 7 уже в этом,
1 min read
Rails Multibase and Models
rails

Rails Multibase and Models

Rails 6.1 предлагает возможность использования одновременно нескольких баз данных. Для чего? Во первых можно распределить нагрузку и использовать одну из баз только для чтения, другую только на запись, например для админки. Конечно можно использовать разные типы баз данных в одном приложении. Это открывает еще больше возможностей, например для объединения
2 min read
Grape Rails.
grape

Grape Rails.

Grape - это API-фреймворк для Ruby. Grape создан для работы с Rack приложениями. Для создания API используется простой DSL (domain specific language). Grape поддерживает разнообразные общепринятые практики при создании API. Для установки, добавить в Gemfile: gem 'grape' или сразу "всё" необходимое для Rails # grape gem 'grape' gem 'grape-entity' # swagger gem
3 min read
pgsync
ruby

pgsync

Синхронизация одной Postgres базы данных в другую. pgsync декларирует следующие преимущества * скорость - таблицы передаются параллельно * безопасность - встроенные методы, чтобы исключить утечку чувствительных данных * гибкость - изящная обработка различий в схемах данных, например отсутствующих колонок * удобство - синхронизация части таблиц, групп таблиц, и относящихся записей Проверено в бою на
2 min read
mailcatcher
ruby

mailcatcher

Конечно да, можно использовать обычную почту, но для облачных IDE или изолированных контейнеров LXC или для DOCKER окружения удобней будет подменять SMTP и смотреть почту локально или в браузере.  Особенно удобно когда работаем дистанционно через облако. mailcatcher написан на Ruby. Так как часть проектов у нас в экосистеме Rails это
2 min read
rails webpacker live-reload views
rails

rails webpacker live-reload views

webpacker дает возможность использовать webpack и webpack-dev-server вместе с Rails. webpacker отлично интегрирован с Rails и имеет все необходимые настройки для быстрого старта с основными популярными технологиями, такими как React или Vue. При разработке мы можем использовать все преимущества webpack. При этом webpacker сосуществует совместно с assets pipeline, не отменять
1 min read
Rails, Webpacker: pug and sass loaders
rails

Rails, Webpacker: pug and sass loaders

Кто работает c  Pug, Slim, Sass никогда больше не возвратятся к "чистому" HTML,CSS коду по крайней мере по своей воле. Скорость кодирования высока, ошибок меньше. Rails 6.0.x, Webpacker 5.x (5.2) (2020-10) Не получается запустить "из коробки" связку Sass, Vue, Pug. Прошло уже много времени, но
3 min read
Rails 6.0 - webpacker hmr in docker
rails

Rails 6.0 - webpacker hmr in docker

Главное * для webpacker создаем отдельный docker сервис, но используем один образ * host - имя контейнера где работает webpacker, Rails будет работать (компилировать) с этим адресом * публичный хост - localhost, при HMR будет опрашивать localhost:3035 * разрешить политику подключения  policy.connect_src для HMR * указываем в настройках hmr: true и hot:
1 min read
Rails Redis Cache Store
rails

Rails Redis Cache Store

Начиная с Rails 5.2 можно использовать в качестве кеша Redis. Несколько разных типов кеша доступны в Rails:  MemCacheStore, FileStore и MemoryStore. Теперь начиная с версии 5.2 мы имеем встроенную поддержку Redis в качестве хранилища кеша. Как работает кеш в Rails можно почитать здесь. По умолчанию Rails использует кеширование
1 min read
Rails фоновые задачи с Sidekiq
rails

Rails фоновые задачи с Sidekiq

Допусти нам нужно по требованию выполнить импорт данных из CSV и отобразить результаты. При стандартном подходе в контроллере создадим метод  и выполним обработку файла. class HomeController < ApplicationController require 'csv' def upload csv_path = File.join Rails.root, 'db', 'data.csv' CSV.foreach(csv_pathm headers: true) do |item| Element.create(
1 min read
9  ChatBots platform (2018)
bot

9 ChatBots platform (2018)

Зачем нужны чат-боты бизнесу? ChatBot может помочь в развитии отношений с клиентами выполняя некоторые однообразные, можно сказать рутинные операции. Что именно? Чат-бот может легко и без ошибок отвечать на однообразные вопросы, собирать необходимую информацию, создать лиды и контакты в CRM. В чём плюсы * Доступность 24/7. Никогда не устает, всегда
1 min read
Rails TimeZone
rails

Rails TimeZone

Ruby предлагает два класса для управления временем: Time и DateTime. TZInfo является отдельной библиотекой часовых поясов, которая обеспечивает преобразования с учетом перехода на летнее время и включает в себя данные о 582 различных часовых поясах. Часовой пояс в Rails В Rails ActiveSupport::TimeZone является оберткой для TZInfo, предоставляющая набор из
2 min read
rails

OmniAuth Rails

OmniAuth - библиотека стандартизирующая аутентификацию через различных провайдеров  в веб-приложении. Библиотека создавалась чтобы быть мощной, гибкой и в тоже время "маленькой" насколько это возможно. Любой разработчик может создать стратегию для OmniAuth которая сможет аутентифицировать пользователей из разных несовместимых между собой систем (приложений). OmniAuth стратегии создаются для любых случаев от Facebook
2 min read
rails

Rails Request, Subdomain, Host

В Rails доступен request (ActionDispatch::Request) со всей необходимой информацией о запросе.  Основной базовый класс Rack::Request. Чтобы получить данные о различных параметрах  запроса используем встроенные методы и хелперы. Во первых мы можем получить полный базовый url - request.base_url. Получить имя хоста через request.host и имя поддомена,
rails

Rails Slim Markdown Tables

По умолчанию парсер таблиц отключен. И вместо таблиц будет обычная строка. Включить обработку разметки таблиц в связке Rails+Slim+Redcarpet можно через опции подключаемых движков. В данном случае Redcarpet для Markdown. Gemfile gem 'slim-rails' gem 'redcarpet' По умолчанию парсер таблиц отключен. config/initializers/slim.rb # Standard Slim options # Slim::Template.
Некоторые типы данных Rails
rails

Некоторые типы данных Rails

Широко распространенные типы данных в Rails. Гео-координаты и деньги. Гео-данные - координаты точки на карте. Деньги - стоимость товаров и услуг, прайс-лист, финансовые данные. Пример для PostgreSQL. Правильный тип данных имеет важное значение для работы и поддержки приложения.   Гео-данные rails g Location 'lng:decimal{10,6}' 'lat:decimal{10,
1 min read
Rails 5.2.2, Neo4J, Docker
rails

Rails 5.2.2, Neo4J, Docker

Пример настройки Rails 5.2.2 и Neo4J в экосистеме Docker/Docker Compose. Указаны файлы необходимы для начала работы в существующем Ruby on Rails проекте. Можно воспринимать как контрольный лист интеграции Rails с Neo4J. Gemfile gem 'neo4j', '~> 9.4.0' config/application.rb (or config/environments/{development|test|production}
1 min read
Rails - текущая страница?
rails

Rails - текущая страница?

Варианты определения текущей страницы в Rails. Абсолютно стандартная задача в любом веб-приложении. Есть разные варианты определения текущей страницы, по факту текущего URL. Чаще всего используется изменения стилей элементов навигации или подключения разных ресурсов на разные страницы сайта. Использовать params[:id] = link_to 'My', my_path, class: ['navbar-item', ('is-active' if params[
1 min read
Railties
rails

Railties

Rails::Railtie это основа Rails фреймворка, а также некоторые хуки для расширения Rails и/или модификации процесса инициализации. Каждый важный компонент Rails (Action Mailer, Action Record, Action Controller и др.) реализуют Railtie (являются под-классами). Каждый отвечает за свою собственную инициализацию. Это позволяет Rails не иметь каких-либо собственных хуков для компонентов,
1 min read