Программисты делают ошибки в коде. Некоторые просто раздражают (ошибки, не программисты – прим. переводчика), другие могут быть действительно опасными для приложения.
Представляю вам свою подборку из 10 распространенных ошибок разработчиков Ruby/RoR и советов о том, как их избегать. Надеюсь, они помогут сократить вам время отладки кода.Читать полностью »
Рубрика «ruby on rails» - 18
10 ошибок в Ruby – Ruby on Rails, которые легко исправить
2015-02-07 в 15:58, admin, рубрики: ruby, ruby on rails, переводВзлом биткоин биржи на Rails
2015-01-26 в 19:02, admin, рубрики: bitcoin, peatio, rails, ruby on rails, информационная безопасностьВ последнее время появилась масса биткоин сервисов. И то что раньше было проектом «for fun» неожиданно стало хранить десятки и даже сотни тысяч долларов. Цена биткоина выросла, но уровень безопасности биткоин сервисов остался таким же низким.
Ради портфолио мы провели бесплатный аудит биткоин биржи с открытым кодом Peatio использующей Ruby on Rails. Репорт в pdf можно скачать тут. Самое интересное что в результате нашлись не очередные унылые рейс кондишены или SQLi, а довольно таки любопытная цепочка багов ведущая к угону аккаунта и краже существенной части горячего кошелька.
Читать полностью »
Triggerable — событийно-ориентированная логика для ActiveRecord моделей
2015-01-15 в 6:34, admin, рубрики: rails, ruby, ruby on rails Одним из главных Rails-трендов в данный момент является переосмысление роли ActiveRecord-классов в приложении: отныне модели должны стать классами, отвечающими за работу с БД, а не солянкой из запросов, ассоциаций, валидаций, методов предметной области и методов представления. Несмотря на огромные модели, часть логики предметной области все равно переезжает в другие части приложения, и это сильно усложняет её понимание. Во многих приложениях много действий совершается при возникновении событий, при этом используются средства ActiveRecord::Callbacks. Данный gem — попытка переосмыслить описание бизнес-правил для ActiveRecord-моделей.
Читать полностью »
Предновогодний проект в сжатые сроки или Паровозик, который смог
2014-12-25 в 17:45, admin, рубрики: gtd, project management, ruby on rails, управление проектами
Эта история о том, как небольшая команда молодых разработчиков в условиях высокой рабочей загрузки загорелась идеей одного праздничного сервиса и отважилась взяться за его реализацию. И, как оказалось, не смотря на многочисленные препятствия, всё же дошла до поставленной цели, не сойдя с дистанции.
За продолжением милости просим под кат:
Читать полностью »
Убиваем внешние запросы во время тестирования rails приложений с помощью VCR
2014-12-21 в 18:24, admin, рубрики: rspec, ruby, ruby on rails, vcr, Веб-разработка, тестирование веб-приложений, Тестирование веб-сервисов
Совсем недавно, у меня возникла проблема заключающаяся в том, что тесты моего приложения довольно долго ходят. Это происходит в виду того, что некоторые части кода любят обращаться к сторонним сервисам вроде iTunes и Facebook.
Обращение к сторонним сервисам во время тестирования это зло по следующим причинам:
- Eсли во время исполнения тестов начинаются проблемы со связью, то они могут либо медленно проходить, либо вовсе падать.
- Как уже и писалось — довольно сильно замедляется скорость прохождения тестов.
- Возможны проблемы с ограничением числа запросов самими сервисами.
Rails или Sinatra: лучшее из двух миров?
2014-12-16 в 19:36, admin, рубрики: ruby, ruby on rails, sinatra, Веб-разработка Из года в год на мир 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
2014-12-16 в 16:28, admin, рубрики: capistrano, capistrano 3, deploy, deployment, nginx, ruby, ruby on rails, ruby on rails 4, unicorn, Веб-разработка, Настройка Linux
Полгода назад я написал пост 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 для деплоя.
Эта статья раскроет следующие темы:
- Использование gem'a capistrano3-ubuntu-server-config
- Использование gem'а capistrano3-git-push
- Моя текущая миниатюрная конфигурация Capistrano
Как мы Select2 в хелпер заворачивали
2014-12-08 в 7:22, admin, рубрики: gem, ruby, ruby on rails, select2, Веб-разработка Думаю, многие знакомы с Select2. Всё в нём замечательно: и элементы красивые, и кастомизации вагон, и c ajax работает и ещё много много полезного делать умеет. Только проблема одна: инициализация довольно громоздкая (js писать надо, экшн иметь для ajax-овой подгрузки результатов и так далее). Это было не шибко удобно и решили мы сделать свою надстройку для Select2, в которой и js писать не надо, да и за пределы вьюхи уходить почти не придётся. О том как мы это делали и что получилось читайте под катом.
Новая версия RubyMine: Chef, Puppet, EditorConfig и многое другое
2014-12-03 в 15:19, admin, рубрики: chef, editorconfig, IDE, puppet, ruby, ruby on rails, rubymine, web-разработка, Блог компании JetBrainsМы в JetBrains искренне считаем, что программирование отнюдь не сводится к простому написанию кода. Программировать — значит постоянно развиваться, приумножать свои знания, совершенствовать навыки, используя при этом самые лучшие инструменты. Если вам знакома притча о двух дровосеках, в которой более искусен оказывается тот, кто не забывает наточить свой топор, то вы поймете наше стремление оттачивать инструменты разработки с каждым следующим релизом. Не стал исключением и последний релиз RubyMine, нашей среды для разработки на Ruby и Rails, о котором мы и хотим рассказать подробнее в этом посте. Кстати, вчера стало доступно для скачивания и первое обновление — RubyMine 7.0.1.
Elastics: простой ElasticSearch-клиент для Ruby со всем необходимым
2014-11-11 в 10:28, admin, рубрики: elasticsearch, rails, ruby, ruby on railsГода полтора назад столкнулся с проблемой выбора клиента к ElasticSearch для node.js. Тогда нашлось несколько проектов, но все были либо слишком усложненные, либо написаны абы как. Хотя казалось: все что нужно — это обертка вокруг http запроса с JSON.encode/decode, обработкой ошибок и парой хэлперов. Тогда для ноды я быстро написал небольшой модуль, который оказался очень удобным.
Недавно надо было прикрутить ES к приложению на рельсах. Часть клиентов для Ruby уже давно не поддерживается, другие слишком усложнены. При этом многие клиенты не имеют механизма управления алиасами, хотя для ES это очень важный функционал.
Я решил написать минималистичный гем, взяв за основу модуль для node.js и расширив его функционал так, чтобы были все самые необходимые инструменты для разработки, деплоя и управления. Вот что получилось.
Читать полностью »