Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Ruby on Rails ActionCable+Vue.js v2 на примере чата

Ruby on Rails
Из песочницы

Доброго… Решил поделиться с сообществом опытом интеграции Vue.js v2 и Ruby on Rails на примере разработки чата. Для этого нам потребуется реализация websocket в Rails — ActionCable.


Это первая часть из нескольких статей чтобы не нагромождать всё в кучу и применять поэтапный подход к разработке. Эта часть в основном повторяет уже существующую статью, ссылка на которую приведена ниже, однако она необходима чтобы проследить весь процесс разработки поэтапно. Зинтересовавшимся — под кат.

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Просмотры6.6K
Комментарии 3

Разработка высоконагруженного WebSocket-сервиса

ПрограммированиеSQLФункциональное программированиеElixir/Phoenix
Из песочницы
Как создать веб-сервис, который будет взаимодействовать с пользователями в реальном времени, поддерживая при этом несколько сотен тысяч коннектов одновременно?

Всем привет, меня зовут Андрей Клюев, я разработчик. Недавно я столкнулся с такой задачей – создать интерактивный сервис, где пользователь может получать быстрые бонусы за свои действия. Дело осложнялось тем, что в проекте были довольно высокие требования по нагрузке, а сроки были крайне невелики.

В этой статье я расскажу, как выбирал решение для реализации websocket-сервера под непростые требования проекта, с какими проблемами столкнулся в процессе разработки, а также скажу несколько слов о том, как в достижении вышеуказанных целей может помочь конфигурирование ядра Linux.

В конце статьи приведены полезные ссылки на инструменты разработки, тестирования и мониторинга.

Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Просмотры51K
Комментарии 58

Что стоит за чистотой в вашей квартире, или препарация Qlean

Блог компании QleanПрограммированиеРазвитие стартапа
image

Привет, хабр. Многие слышали про наш сервис, кто-то пользовался, и вот мы созрели до того, чтобы рассказать про свою внутреннюю IT-кухню. Мы начинали в 2014 году с квартиры-офиса на Арбате (с переговоркой в кухне), 300 клиентов и организацией всего “руками”. Вся информация фиксировалась в экселе, а разработкой и не пахло. Со временем количество клиентов увеличивалось, потребовалась автоматизация, и сегодня Qlean — это зрелая компания, в которой отдел разработки насчитывает более 25 человек. Сегодня через наш сервис делается в среднем около 1000 уборок в день силами 3000 подключенных к системе исполнителей. Мы третьи в мире после зарубежных Handy и Helpling по объемам уборок, и работаем в Москве, Санкт-Петербурге и Екатеринбурге. В этом посте мы проведем экскурсию по системам нашего сервиса и проанонсируем дальнейшие темы блога.
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Просмотры13K
Комментарии 36

Переиспользуемые UI компоненты в приложениях на Ruby on Rails

Разработка веб-сайтовOpen sourceRubyRuby on RailsHTML
Из песочницы

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

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Просмотры3K
Комментарии 1

GeekBrains открывает набор на бесплатные курсы подготовки программистов

Блог компании Mail.ru GroupRubyJavaScriptRuby on Rails


Всем привет! Мы открываем набор на бесплатные курсы обучения для Ruby и Frontend-разработчиков. Для участия необходимо пройти конкурс. Пять лучших выпускников пройдут стажировку у нас и останутся работать в офисе. Заявки на обучение принимаются по 17 июня включительно. Подробности набора и программа обучения – под катом.

Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Просмотры14K
Комментарии 30

Saint P Rubyconf 2018: 10 июня, Санкт-Петербург

Блог компании JetBrainsRubyRuby on Rails
Здравствуй Хабр и Ruby-сообщество! Спешим сообщить, что уже совсем скоро, 10 июня 2018 года, во второй раз состоится конференция для разработчиков на Ruby и Ruby on Rails — Saint P Rubyconf 2018. Слоган конференции — «Ruby: the best parts». Место проведения — Санкт-Петербург, Корпус ИТМО на ул. Ломоносова, 9.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Просмотры1.5K
Комментарии 2

RubyMine 2018.2: присоединение отладчика к удаленным процессам, chruby, улучшенный анализ кода и многое другое

Блог компании JetBrainsRubyПрограммированиеRuby on Rails
Привет, Хабр!

Сезон летних обновлений IDE на базе IntelliJ продолжается, и в этой серии мы расскажем, чему новому научился RubyMine в версиях 2018.1 и вышедшей на днях RubyMine 2018.2.


Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Просмотры2.5K
Комментарии 3

Сокрытие в Ruby. А ещё скрываем классы из Top-Level

RubyRuby on RailsООП

Что бы далеко не ходить, сразу определимся с терминами.


  • Инкапсуляция — упаковка данных и функций в единый компонент.
  • Сокрытие — представляет собой принцип проектирования, заключающийся в разграничении доступа различных частей программы к внутренним компонентам друг друга.

Взято с вики. В языке программирования Ruby с инкапсуляцией вроде как всё хорошо. С сокрытием на первый взгляд тоже, нам доступны локальные переменные, переменные инстансов, разные уровни доступа к методам (public, protected, private). Но иногда этого может не хватать.

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Просмотры2.3K
Комментарии 1

Используем SQL в Rails

Ruby on Rails
Перевод

Во-первых, статья не о том, как я люблю рельсы, во-вторых, статья не о том, как я их ненавижу. К ним можно относиться совершенно по-разному и лучше они станут только если их менять. И хуже они могут стать только если их начать менять. Ну, в общем, я вас предупредил, а вы меня поняли.


Одна из основных концепций ActiveRecord состоит в том, что база данных достаточно утилитарна и может быть изменена. Ну, вы такие сидите, пишете свои модельки с использованием MySQL и вдруг где-то прочитали, что можно вот так вот взять и заменить MySQL на MongoDB. Хорошо, не так радикально, но, скажем, на PostgreSQL у вас могут быть причины заменить MySQL. Или наоборот, ничего не имею против MySQL. Тут ActiveRecord утверждает, что сделать вам это проще простого, мол скоупы, before/after фильтры и ассоциации достаточно абстрактны, чтобы не переживать за формирование запросов к базе данных и заботится о логике приложения. Что вместо WHERE is_archived = TRUE вы с радостью напишете where(is_archived: true) и ActiveRecord сделает все за вас. Все примеры будут преведены для PostgreSQL, а не для MySQL, так что пользователи MySQL вынуждены будут изобретать свой собственный велосипед.



Но как бы не так! На практике оказывается, что этот слой абстракции вся напрочь дырявая, как корыто из сказки о Золотой Рыбке. И что многие базовые возможности использовать нельзя, вроде сравнения дат или работы с массивами. И получаются скоупы с вынужденными where("#{quoted_table_name}.finished_at >= ?", Date.current) или where("#{quoted_table_name}.other_ids <@ ARRAY[?]", ids). На что ActiveRecord дает вполне осознанный и логичный ответ: не используйте это. Вместо массивов используйте habtm-связь, а если надо сравнивать даты, живите с этим. Да, и не дай бог вам пропустить quoted_table_name в таком скоупе — первый же includes или joins расставит все на свои места. Проще везде и всегда писать, чтобы руку не сбивать.

Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Просмотры4.1K
Комментарии 2

Понижаем уровень связанности с помощью DI для улучшения тестируемости кода, пример реализации

Разработка веб-сайтовТестирование IT-системRubyRuby on Rails
Из песочницы

В началье статьи хочу сразу заметить, что я не претендую на новизну, а только хочу поделиться/напомнить о такой возможности как IoC DI.


Также у меня почти нет опыта написания статей, это моя первая. Я старался как мог, если что не судите строго.


О чем вообще речь


Большая часть проектов на Rails, с которыми я сталкивался, имеют одну большую проблему. Они либо не имеют тестов вовсе, либо их тесты проверяют какую-то незначительную часть, при этом качество этих тестов оставляет желать лучшего.


Основная причина этого заключается в том, что разработчик просто не знает как можно написать код так, что бы в unit-тестах тестировать только написанный им код, а не тестировать код, который, допустим, содержится в каком-то ином сервисном объекте или библиотеке.


Далее в голове программиста складывается логичная цепочка, а зачем мне вообще выносить код бизнес логики в другой слой, я же тут всего пару строк добавлю и все будет соответствовать требованиям заказчика.


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


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

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Просмотры1.7K
Комментарии 0

Экспертная система на Rails

ПрограммированиеАлгоритмыRuby on RailsAgileИскусственный интеллект
Статья посвящена созданию экспертной системы. Вначале статьи — блок-схема из книги из списка литературы, потом описание базы данных и алгоритма. Далее идет «справка о том, как сделать этот проект», в которой описан алгоритм создания этого проекта. В конце статьи — список литературы. Также в ней имеются пара скриншотов.
Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Просмотры2.8K
Комментарии 3

Интервью со спикером конференции RubyRussia Маркусом Ширпом

Блог компании RubyRussiaRubyRuby on RailsКонференции
Всем привет! Чуть больше, чем через неделю в Москве пройдет конференция RubyRussia. В сегодняшнем интервью разработчик из Evrone Михаил Моргунов пообщался с одним из наших спикеров — Маркусом Ширпом, создателем популярного инструмента Ruby Mutation Testing.


Первый вопрос — про Mutant. Что нам нужно знать об этом инструменте? О чем будет доклад на RubyRussia?
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Просмотры751
Комментарии 1

Интервью c Аароном Паттерсоном, спикером конференции RubyRussia 2018

Блог компании RubyRussiaRubyRuby on RailsRustКонференции
Привет! Продолжаем серию интервью со спикерами конференции RubyRussia. Аарон Паттерсон (он же tenderlove) — член Ruby core team и Rails core team, ведущий инженер-программист в маленьком стартапе под названием GitHub. Павел Аргентов пообщался с Аароном перед его второй поездкой в Россию.



Начнем со стандартного вопроса. Какова твоя личная ruby-история? Как ты сел на этот поезд? Расскажи про свои достижения? Получилось ли сделать мир лучше?
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Просмотры2.2K
Комментарии 4

Как развернуть приложение Ruby on Rails с HAProxy Ingress, unicorn/puma и веб-сокетами

Блог компании SouthbridgeСистемное администрированиеСерверное администрирование
Перевод

После нескольких месяцев тестов мы наконец перенесли приложение Ruby on Rails в продакшен с кластером Kubernetes.


В этой статье я расскажу, как настроить маршрутизацию на основе Path для приложения Ruby on Rails в Kubernetes с контроллером HAProxy Ingress.


image

Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Просмотры2.7K
Комментарии 0

Чарльз Наттер. Как перенести древний монолитный проект на JRuby и стоит ли это делать?

Блог компании RubyRussiaRubyПрограммированиеRuby on RailsКонференции
Через пару дней в Москве пройдет конференция RubyRussia. Наш гость Чарльз Наттер (работает над JRuby и JVM поддержкой в Red Hat) ответил на пару вопросов.

Как вы попали в мир программирования и Ruby?

В 2004 году я работал по контракту в правительственной фирме в качестве Java Enterprise архитектора. Я работал над проектом для Министерства сельского хозяйства США, и проводил пару недель в месяц в Вашингтоне. Одна из таких поездок совпала с RubyConf 2004, и поскольку один из моих друзей давно рекомендовал мне обратить внимание на Ruby, я решил сходить на конференцию. Так я оказался на мероприятии, посвященном Ruby, не имея никакого представления об этом языке… но я понял каждый кусочек кода, каждый приведенный пример. Я был поражен и пообещал себе найти способ принести Ruby в мой Java-мир.

Над какими проектами вы работаете сейчас?
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Просмотры2.1K
Комментарии 1

Поваренная книга Ruby-разработчика: Domain Driven Design рецепты ( 1-я часть, область применения )

Разработка веб-сайтовRubyАнализ и проектирование системПроектирование и рефакторингRuby on Rails

Введение


Я хотел бы рассказать об опыте применения практик DDD к существующему Ruby on Rails проекту. Изначально, мы имели монолит, который писался 10 лет. Основная трудность проекта была в достаточно сложных процессах, и высокой связанности. Нам удалось не только декомпозировать приложение на отдельные сервисы, но и существенно повысить читаемость кода, сделать описываемые процессы прозрачными.


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


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

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Просмотры12K
Комментарии 2

Поваренная книга разработчика: Domain Driven Design рецепты ( 2-я часть, структура и взаимодействие )

Разработка веб-сайтовRubyАнализ и проектирование системПроектирование и рефакторингRuby on Rails

ddd-header


Введение


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


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


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

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Просмотры13K
Комментарии 4

Работа с базой данных из приложения

ПрограммированиеСовершенный кодПроектирование и рефакторингООППромышленное программирование

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


Предполагается, что читатель немного знаком с паттернами Active Record, Data Maper, Identity Map и Unit of Work.


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

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Просмотры5.8K
Комментарии 2

Решаем проблемы типов данных в Ruby или Make data reliable again

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

image
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Просмотры3.6K
Комментарии 9

Пацаны, так Ruby умер или нет?

RubyRuby on RailsGoИнтервью


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

Но при этом существуют же некие преданность технологии и даже культ инструмента. Скажи пхп-шнику, что пора переезжать на .NET, услышишь «PHP отличный, полмира на нем пишет», или просто получишь в лоб.

Что же не так с Ruby, и куда делась его взрывная популярность? Я поговорил с несколькими рубистами. Например, Максимом Индыковым из Staply, чья команда переезжает с Ruby на Go, и с Алексеем Кузнецовым из GeekBrains, компании, которая начиналась с курсов по Ruby, а сейчас отказалась от них полностью.
Читать дальше →
Всего голосов 56: ↑46 и ↓10+36
Просмотры63K
Комментарии 184