Рубрика «ruby» - 22

image

Меня всегда привлекали отзывчивые, динамичные интерфейсы, созданные на Javascript, но каждый раз, пытаясь погрузиться в изучение этого языка, я превращал свой мозг в кашу и ел её оставлял это до «лучших» времен, возвращаясь к статичным страницам на клиенте и PHP на сервере. Время шло.

Год назад, шатаясь по страницам сети, я наткнулся на статью про Coffeescript. Хм, интересно… Пары примеров кода было достаточно, чтобы заразиться идеей где-то его применить, но что то меня напрягало — хотелось мне какой-то фреймворк, который сам заботился бы о компиляции coffee в js. Так я нашел Rails, а вместе с ним ruby, gems, sass и кучу всего того, что привело меня в экстаз критическую точку невозврата…

Доброго времени суток, господа! Меня зовут Денис, и в этой статье я хочу поделиться с вами своими взглядами на разработку front-end'a и небольшой историей изобретения одного велосипеда, а вот очередного или нет — судить вам.
Читать полностью »

Grape: не рельсами едиными, ч. 2 - 1В первом своем посте про Grape я быстренько проскакал по основным его возможностям, за что заслуженно был засыпан упреками в излишней сжатости подачи материала. По результатам публикации прошлого поста я пообещал практический пример применения фреймворка, а также сравнительные бенчмарки.

Сегодня мы приступим к созданию примера — разработаем API, которое умеет:
— регистрировать пользователя
— активировать его по email
— обновлять данные авторизованного пользователя
— возвращать профиль авторизованного пользователя

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

image
Уважаемые посетители ресурса habrahabr.ru! Мы хотим познакомить Вас со статьей Джереми Суареса (Jeremy Suarez), инженера по автоматизации тестирования. Если Вы планируете организовать автоматизированное тестирование на своем проекте с применением языка Ruby и WATIR – эта статья придется Вам как нельзя кстати. Джереми описывает все простым языком, на элементарных примерах. После прочтения статьи у Вас сформируется четкое понимание процесса – от его начальных шагов, до завершающего этапа.Читать полностью »

Одним из главных Rails-трендов в данный момент является переосмысление роли ActiveRecord-классов в приложении: отныне модели должны стать классами, отвечающими за работу с БД, а не солянкой из запросов, ассоциаций, валидаций, методов предметной области и методов представления. Несмотря на огромные модели, часть логики предметной области все равно переезжает в другие части приложения, и это сильно усложняет её понимание. Во многих приложениях много действий совершается при возникновении событий, при этом используются средства ActiveRecord::Callbacks. Данный gem — попытка переосмыслить описание бизнес-правил для ActiveRecord-моделей.
Читать полностью »

Одним из инструментов, позволяющих автоматизировать взаимодействие с браузером, является Selenium Webdriver. В действительности автоматизированные тесты веб-страниц с использованием Selenium Webdriver выглядят довольно громоздко. Вот «небольшой» пример, который параллельно в двух браузерах открывает страницу поисковика Google, заполняет поисковую строку и отправляет форму:

Ускоряем написание Selenium-автотестов на Ruby - 1
Читать полностью »

Убиваем внешние запросы во время тестирования rails приложений с помощью VCR - 1

Совсем недавно, у меня возникла проблема заключающаяся в том, что тесты моего приложения довольно долго ходят. Это происходит в виду того, что некоторые части кода любят обращаться к сторонним сервисам вроде iTunes и Facebook.

Обращение к сторонним сервисам во время тестирования это зло по следующим причинам:

  1. Eсли во время исполнения тестов начинаются проблемы со связью, то они могут либо медленно проходить, либо вовсе падать.
  2. Как уже и писалось — довольно сильно замедляется скорость прохождения тестов.
  3. Возможны проблемы с ограничением числа запросов самими сервисами.

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

В одном из проектов, в которых я учавствовал, возникла задача определения временной зоны по текущей геолокации пользователя. На backend приходила запись, создаваемая пользователем с помощью смартфона. Время приходило не в UTC, но в параметрах содержались координаты.
Конечно, существуют готовые сервисы (например The Google Time Zone), но все они платные или сильно ограничены по функционалу. Вот я и решил написать собственный сервис.
Читать полностью »

Из года в год на мир Ruby снисходило благословление – здесь появилось завидное количество фреймворков для разработки веб-приложений. Однако двое из них недавно стали явными лидерами этой сферы. Большинство читателей этого сайта наслышаны о Ruby on Rails. Он был разработан Дэвидом Хайнемайером Хенссоном в 2004 и представляет собой MVC фреймворк, который помогает повысить продуктивность и сделать при этом разработчиков счастливыми. Sinatra был создан Блейком Мизерани в 2007, является предметно-ориентированным языком (domain-specific language), который выступает обёрткой для уровня легковесных HTTP запросов и ответов поверх Rack. Его минималистичный подход изящен и элегантен. Статистика на RubyGems.org наглядно показывает, насколько популярны оба этих фреймворка: Rails был скачан 7 миллионов раз, а Sinatra – 1.5 миллиона. Именно Rails вовлёк меня в веб-разработку на Ruby, но на протяжении нескольких последних лет я гораздо чаще использовал Sinatra (и вот 7 причин, из за которых я его люблю). На поверку оказалось, что мне для построения приложения нужен лишь Sinatra вместе с несколькими гемами. Это заставило меня поразмыслить над тем, а можно ли с Sinatra осилить любой проект. Когда лучше всего использовать Sinatra, а когда наилучшим выбором будет Rails? Пытаясь найти ответ на этот вопрос, я спросил у знаменитых Ruby разработчиков, что они думают по этому поводу.
Читать полностью »

Самый простой deploy приложения на Ruby on Rails - 1

Полгода назад я написал пост Deploy приложения на RoR 4 с помощью Capistrano 3. Прошло время, я получил много положительных отзывов, но были и отрицательные. Из них можно было понять следующее:

  • Инструкция слишком сложная для новичка
  • Очень много всего приходится делать «руками»

Я подумал и написал gem 'capistrano3-ubuntu-server-config', который полностью настраивает Ваш «чистый» Ubuntu сервер. Всё, что Вам нужно сделать руками — создать нового пользователя и дать ему права visudo (причем давать ему права на passwordless sudo ему не надо). Он может:

  • Настроить SSH (Добавить настройки 'PermitRootLogin no', 'UseDNS no', 'AllowUsers username')
  • Создать и настроить swap (размер запрашивается)
  • Сделать
    sudo apt-get update

    и

    sudo apt-get upgrade

  • Установить из исходников и настроить как чистый Nginx, так и с модулем Pagespeed
  • Установить PostgreSQL из репозитория, затем создать суперпользователя БД (имя пользователя и пароль запрашиваются)
  • Установить из исходников и настроить Redis
  • Установить RVM с последней версией Ruby и gem'ами Rails, Bundler
  • Скопировать Ваш приватный ssh ключ (например для доступа к приватному git репозиторию) с локальной машины на сервер и добавить его в ~/.ssh/config
  • Установить imagemagick из репозитория (Необходим для Paperclip, постоянно его забываю ставить)
  • Установить любые дополнительные пакеты из репозитория (Запрашивает какие именно)

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

Эта статья раскроет следующие темы:

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

Здравствуйте, уважаемые читатели! Хочется представить вашему вниманию опыт перевода известного в среде разработчиков на Руби руководства по стилю оформления кода. Оригинальный текст данного руководства составляется сообществом программистов на Руби под творческим руководством Божидара Батсова.
Читать полностью »


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