Рубрика «ruby on rails» - 25

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

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

Прежде всего, стоит разделить все плагины Redmine на две категории:

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

Все немного сложнее, когда плагин должен изменять встроенную функциональность!
Читать полностью »

I-Tier: Расщепление монолита

Недавно мы завершили годовой проект миграции веб-трафика компании Групон в США от монолитного Ruby on Rails приложения к новому стеку Node.js и получили существенные результаты.

С самого начала весь веб-фронтенд американского Групона был единым исходным кодом Ruby. Код фронтенда быстро развивался, что затрудняло его поддержку и усложняло процесс добавления новых фич. В качестве решения проблемы с этом гигантским монолитом мы решили реструктурировать фронтенд посредством его разделения на меньшие, независимые и более простые в управлении части. Основой этого проекта стало разделение монолитного вебсайта на несколько независимых Node.js приложений. Мы также переделали инфраструктуру, чтобы обеспечить совместную работу всех приложений. Результатом стал Interaction Tier (I-Tier).

Вот некоторые из важных моментов этой глобальной архитектурной миграции:

• Страницы на сайте загружаются значительно быстрее

• Наши команды девелоперов могут разрабатывать и добавлять новые фичи быстрее и с меньшей зависимостью от других команд

• Мы можем избежать повторной разработки одних и тех же фич в разных странах, где доступен Групон.

Этот пост является первым из серии постов о том, как мы реструктурировали сайт и какие огромные преимущества мы видим в дальнейшем, которые будут лежать в основе продвижения компании Групон.
Читать полностью »

Свою первую программу я писал для интерпретатора Basic. Он запускался при включении машины, а после ввода программу можно было выполнить командой RUN.

Многое изменилось с тех пор. Мы говорим о стеках технологий и целых экосистемах в IT. За выполнение каждой прихоти программиста конкурируют несколько систем/библиотек/расширений/модулей/сервис. А выбрать среди них порой так же сложно, как написать свой велосипед.

К психиатру пришел человек с жалобой на невроз.
— А кем же вы работаете? — интересуется доктор.
— Сортировщиком апельсинов на овощной базе. Передо мной желоб, по которому катятся апельсины. Крупные я должен класть в один ящик, а мелкие — в другой.
— Что же нервного в такой работе?
— Как что? Я целый день должен принимать решения, решения, решения.

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

Итак, для создания rails-приложения нам понадобятся
Читать полностью »

image
Представьте, что у Вас есть веб-приложение и одной из его функций является массовая рассылка новостей Вашим пользователям.
По некоторым причинам часть email адресов пользователей нерабочие или неверно заполненные. Хорошо бы таких пользователей автоматически отписать от рассылки?
Читать полностью »

image В этой статье мы рассмотрим способ разворачивания веб приложений, написанных с использованием различных технологий, в облаке Azure Cloud Services. А именно это будет Ruby, Python, Node.js, Perl и с некоторыми оговорками также Java и Railo (ColdFusion). В качестве примера Ruby приложения будем использовать Redmine, работающий на Ruby on Rails, в Python пойдет Lightning Fast Shop, работающий на Django, в Node.js будем использовать небольшой проект с использованием express.js, на Perl будем ставить пустой проект Mojolicious. Целью данной статьи не является экскурс по всем этим веб технологиям, а лишь показать удобный и универсальный способ публикации в облаке Azure. Так что кода на Ruby, Python или Perl в ней не будет. Зато будет много скриншотов, shell-скриптов и инструкций по упаковке и развертыванию приложений.
Читать полностью »

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

Наш проект – сайт для футбольных фанатов, которые интересуются жизнью своих кумиров в социальных сетях: Sport for Social Fans.

Ниже небольшая пьеса в двух актах, с пятью действующими лицами и антрактом.
Пьеса в двух актах про спорт и рельсы
Читать полностью »

В приложении, которое я разрабатываю на Ruby on Rails, мне нужно было подключить платежную систему. Заказчик заключил договор с Деньги Online, и первым делом я, конечно, проверил список поддерживаемых систем в ActiveMerchant от Shopify — там этого сервиса не оказалось, также еще поискал готовые решения, которые смогли бы упростить интеграцию, но ничего полезного под RoR не нашлось. В итоге было решено форкнуть ActiveMerchant и разработать под него интеграцию для этого сервиса, а в последствии использовать наработки в проекте.

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

Исходники РосВыборов открыты

В августе на Хабре был пост, в котором мы срочно искали Rails-разработчиков, и ситуация выглядела почти критической. Тем не менее, хотя это было и непросто, мы успели – система координации наблюдателей успешно отработала на предвыборном этапе и непосредственно во время выборов, выполнив возложенные на неё задачи.
Конечно, были накладки, самая большая – почти часовой downtime интерфейса записи обращений коллцентра в день выборов, спровоцированный крупной DDoS-атакой на “соседние” проекты ФБК (наша ошибка, могли получше подготовиться), но в целом на результатах это не сказалось.

После выборов по понятным причинам разработка фактически остановилась, и проект потихоньку был подготовлен к открытию кода. Я сам в свободное время буду заниматься его доработкой, но так один далеко не уедешь, и поэтому, конечно, нам нужны руки и головы тех, кто готов пожертвовать немного времени на развитие системы. То, что она будет нужна, не вызывает сомнений, первые большие выборы, где понадобится такой масштаб координации наблюдателей – выборы в МосГорДуму, которые уже не за горами.

Итак, репозиторий проекта — github.com/fbkinfo/rosvybory.
Читать полностью »

Prerender

Великолепное Open Source решение для полноценной поисковой индексации ваших JavaScript приложений (Backbone, Angular, Ember, ChaplinJS, Marionette). Работает это следующим образом:

  1. Мидлвар на Ruby on Rails или Node.js проверяет user agent при каждом запросе к приложению
  2. Если обнаружен краулер поисковой машины то отправляется GET запрос к Prerender
  3. Prerender вызывает ваше приложение для той страницы, которую запрашивает краулер
  4. Страница рендерится с помощью PhantomJS
  5. Полученный HTML посылается обратно
  6. Мидлвар возвращает HTML краулеру

Читать полностью »

в 13:29, , рубрики: rubinius, ruby, ruby on rails, метки: ,

image

Сегодня на официальном сайте проекта Rubinius появилась отличная новость о выходе версии 2.0 и о планах проекта на будущее. Rubinius — это альтернативная реализация исполняемой среды для языка Ruby, наряду с официальной MRI, JRuby и другими, менее известными разработками.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js