Программирование на Ruby - Новости

Обновление в Ruby Style Guide

Вышло очередное обновление руководства по стилю оформления кода на Руби на русском языке.

Руководство является переводом составляемого сообществом сборника лучших практик под редакцией Божидара Батсова.

Английский оригинал: https://github.com/bbatsov/ruby-style-guide

Русская версия: https://github.com/arbox/ruby-style-guide

Источник: rubyflow.ru

TheRole 3. Авторизация для Ruby on Rails

Вышла 3-я версия гема TheRole. В этот раз мы сконцентрировались на тестах и разделении API и UI гема.

Подробный рассказ о геме на русском языке сегодня опубликован на хабре.

ГЕМ: https://github.com/the-teacher/the_role
СТАТЬЯ: http://habrahabr.ru/post/249951/

Источник: rubyflow.ru

Онлайн-интенсив "Профессиональная разработка на Ruby on Rails"

alt text

Открыта регистрация 5-го потока уникального интенсива по Ruby on Rails от онлайн-школы Thinknetica. Количество мест ограничено!

Для кого?

Этот интенсив для тех, кто уже знает основы Ruby on Rails, но хочет стать профессионалом и научиться создавать production-ready приложения.

За 3 месяца с нами вы освоите больше, чем самостоятельно за год.

Что будет?

На курсе основное внимание уделено лучшим практикам и подходам профессиональных разработчиков. Вы научитесь создавать приложения «с нуля» и до деплоя. Изучите такие техники как TDD/BDD, agile-методологии, git flow. Познакомитесь со множеством полезных библиотек, узнаете о внутреннем устройстве Rails, научитесь писать хороший код, проектировать архитектуру, создавать REST API, настраивать сервер и делать деплой, а также многому другому.

Как проходит интенсив?

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

Что в итоге?

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

Регистрируйтесь, пока есть места!

Источник: rubyflow.ru

Pliny - скелет для создания HTTP APIs

Pliny - это продукт команды инженеров из Heroku. Он базируется на Sinatra и других отличных и проверенных временем инструментов типа Sequel и Puma.

Pliny - яркий пример умения отлично сочетать различные библиотеки.

Все подробности ищите на GitHub - github.com/interagent/pliny.

Источник: rubyflow.ru

3 неправильных и 1 правильный способ сделать блог. От статики к Rails и обратно к статике.

Статья о нелёгком процессе выбора правильной технологии для блога. За 7 лет проект fodoj.com прошёл от статичных файлов к блогу на Rails только чтобы понять, что статичные файлы и Middleman gem это хорошо.

http://mkdev.me/categories/back-end/posts/3-nepravilnyh-i-1-pravilnyy-sposob-sdelat-blog

Источник: rubyflow.ru

gem 'smsru'

Всем привет!

Представляю Вашему вниманию gem 'smsru' от Фастерии!
Он представляет собой современный gateway к сервису sms.ru. В качестве вкусностей есть config.sms_ru.delivery_method, напоминающий config.action_mailer.delivery_method гем'а letter_opener.

Желающие поконтрибутить - в issues!

Источник: rubyflow.ru

"Лаборатория новых профессий" запускает курс "Специалист по большим данным"

Big Data

28 февраля в Москве стартует программа "Специалист по большим данным" - трехмесячный интенсив для разработчиков и экспертов по IT-инфраструктуре, которые хотят войти в быстро в растущую индустрию Big Data. Курс разработан "Лабораторией новых профессий" - это образовательный проект центра Digital October.

Обучение через практику

Цель программы - научить разработчиков и технических специалистов решать важнейшие задачи, которыми занимаются специалисты по Big Data. Курс состоит из трех кейсов, и каждый из них длится по месяцу. Это:

  • Анализ социальных графов
  • Создание мультиклассных классификаторов на основе анализа веб-логов
  • Разработка рекомендательных систем

Интерактивный онлайн

Приятная фишка курса - возможность учиться из любой точки мира, не теряя в качестве. Занятия проходят в центре Digital October три раза в неделю по вечерами, но в них можно принять участие и удаленно. Студенты, проходящие обучения в онлайне, ощущают себя полноценными участниками занятия благодаря профессиональной многокамерной съемке, а также могут задавать вопросы преподавателю в режиме видеоконференции и активно принимать участие в дискуссии. Записи всех занятий также доступны студентам в личном кабинете.

Преподают только представители индустрии

Вести занятия будут практики из ведущих технологических компаний, работающих с большими данными. К примеру, в разное время в качестве лекторов выступят Валерий Топинский (экc-Яндекс, ШАД), Константин Круглов (основатель D.C.A. Alliance) и Киншук Мишра (Spotify). Индустрия меняется очень стремительно, и мы даем студентам навыки и умения, актуальные прямо сейчас.

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

Kaggle, реальные массивы данных и мастер-классы

Каждый из кейсов программе преподается в три этапа. Сначала слушатели учатся видеть общие закономерности и разбирают хорошо проработанные задачи из Kaggle. Дальше выполняют самостоятельные проекты с реальными данными под руководством тьюторов. К примеру, в рамках второго кейса слушатели попробуют оптимизировать алгоритмы показа рекламы в системе D.C.A. Alliance - а тот, кто добьется хороших результатов, не только получит одобрение преподавателей, но и полностью отобьет стоимость обучения.

На первых двух этапах студентам даются практические навыки по полному циклу работы с большими данными:

  • Развертыванию Hadoop/HDFS/HBase
  • Предобработке и очистке данных
  • Построению модели предсказания
  • Выбору оптимального алгоритма машинного обучения
  • Калибровке модели

Третья часть знакомит слушателей с готовыми инструментами, а также дает возможность послушать мастер-классы по лучшим практикам от лидеров индустрии (Яндекс, Сбертех, Spotify, МТС, IBM, Cloudera). Спикеры будут рассказывать на реальных примерах, как собирают, хранят и используют большие данные в их компаниях.

Собеседование после окончания курса

Каждый студент, который успешно выполнит итоговые квалификационные задания, получит возможность пройти собеседование в ведущих российских технологических компаниях. Стратегические партнеры программы - Сбербанк-Технологии и D.C.A. Alliance, они готовы принять на работу большое количество квалифицированных людей.

Требования к студентам

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

  • Хорошие рабочие знания по основам теории вероятностей и математической статистики
  • Опыт разработки приложений от 2-х лет
  • Также (очень желательно) знать основы теории машинного обучения.

Источник: rubyflow.ru

Введение в ELK: собираем, фильтруем и анализируем большие данные

В этой статьи мы подробно рассмотрим весь стэк ELK:

  • сбор и фильтрация данных из множества источников при помощи logstash
  • масштабируемое надёжное хранение этих данных в elasticsearch
  • анализ и поиск по этим данным при помощи kibana+elasticsearch

Помимо теоретической части, мы взяли Vagrant, большой файл с логами Rails-приложения и по шагам показали как этот файл загрузить в elasticsearch, по пути оформив данные в удобный для поиска формат. А затем построили красивую панель с графиками основанными на этих данных.

http://mkdev.me/categories/arhitektura-i-devops/posts/vvedenie-v-elk-sobiraem-filtruem-i-analiziruem-bolshie-dannye

Источник: rubyflow.ru

Организация верстки в rails проекте с помощью гема rails_ui_kit

Где обычно вы верстаете страницы сайта для последующей интеграции с rails приложением? В отдельном репозитории с html файлами или сразу в rails в каком-нибудь специально отведенном контроллере? А тестируете ли верстку длинными словами и текстами? А проверяете ли различные варианты отображения элементов верстки с помощью длинного текста? Попробую кратко осветить эти вопросы, рассказав о геме rails_ui_kit.

Идея написать этот гем и использовать его в разных проектах возникла после прочтения записей из блога hashrocket (раз, два, три).

Кратко о возможностях гема:

  • возможность верстки сразу в стеке rails приложения, который предоставляет большие возможности работы с темплейтами, шаблонами и другими вкусностями (haml, sass, coffeescript и т.п.)
  • навигация по шаблонам верстки и хранение их в отдельной ui директории
  • предоставление хелперов для использования в верстке

На данный момент гем имеет минимальный набор хелперов, которые наиболее часто приходится использовать практически в каждом проекте. Подробнее об этих хелперах можно прочесть в блоге hashrocket. Вы можете сами добавить необходимые хелперы, расширив модуль UiHelper.

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

  • хелпер с длинным именем пользователя (Константин Константинович Константинопольский)
  • хелперы различных по длине значений цен (1000 RUB, 100 000 RUB, 1 000 000 RUB, 999 000 000 RUB)
  • lorem-хелпер для хлебных крошек
  • lorem-хелпер значений для select тега

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

Буду рад, если гем rails_uit_kit вам пригодится. Так же буду рад получить фидбек и идеи по улучшению гема.

Страница репозитория - https://github.com/puffy/rails_ui_kit.

Источник: rubyflow.ru

Настройка и деплой Rails приложений при помощи Ansible и Capistrano

Подробное руководство о том, как быстро и легко настроить сервер и задеплоить на него Ruby on Rails приложение используя Ansible и Capistrano.

http://mkdev.me/categories/arhitektura-i-devops/posts/nastroyka-i-deploy-rails-prilozheniy-pri-pomoschi-ansible-i-capistrano

Источник: rubyflow.ru

Форум для русскоязычных Ruby/Rails разработчиков

Девятнадцатого января я запустил форум http://onrails.club. Основная цель запуска - предоставить единое место, где могли бы с одинаковым комфортом общаться как опытные разработчики, так и новички в программировании на Ruby.

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

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

Приглашаю всех: сеньоров, джуниоров, миддлов и тех, кто только смотрит в сторону Ruby-мира. Построим качественное сообщество вместе :)

Источник: rubyflow.ru

Правильный блог на Rails: sitemap, robots и rss

Многие начинающие (и опытные) ruby-разработчики со временем задаются целью перенести свой существующий блог на Rails или завести новый, используя этот фреймворк. Простейшие сущности, такие как сами посты, авторизация и комментарии делаются в два счета, но то, что получается в итоге на блог пока еще не тянет. Полноценному блогу, как и многим сайтам и сервисам, помимо базового функционала требуется еще несколько составляющих. О них и пойдет речь в статье.

http://mkdev.me/categories/back-end/posts/pravilnyy-blog-na-rails-sitemap-robots-i-rss

Источник: rubyflow.ru

gem для работы с moysklad.ru

Наши клиенты в Киоске часто используют Мойсклад как основной источник информации о товарах.

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

В общем, как вы догадались, существующие решение (точнее решение) не подошло. А у нас, в итоге. получилось нечто гораздо большее чем просто client для API, библиотека удачно себя зарекомендовала в продакшее и решено было выделить ее в отдельный opensource проект.

Делюсь: https://github.com/brandymint/moysklad

Источник: rubyflow.ru

Refile - новое решение для загрузки файлов

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

Возможности:

  • поддержка различных бэкендов (файловая система, S3 и тд),
  • удобная интеграция с ORM,
  • поддержка обработки файлов "налету",
  • поддержка потокового IO,
  • безпробленая прямая загрузка (включая S3).

Примеры кода и очень подробное описание вы найдете на GitHub - github.com/elabs/refile

Источник: rubyflow.ru

Ruby & Oracle

Возникают задачи, при которых необходимо работать с БД Oracle.

Это может быть работа как с основной БД (подробный туториал, англ.), так и небольшие задачи по импорту из локальной БД.

Разберем последний случай:

  1. Устанавливаем клиент (офф.документация, англ.)
    Необходимо скачать с офф.сайта несколько файлов отсюда, и распаковать в /opt/oracle. Также важно установить значение переменной окружения LD_LIBRARY_PATH.
    *В документации существует пометка, что даже для 64-битных ОС необходимо скачивать 32-битную версию. Для моего случая, это не сработало и пришлось устанавливать 64-битную версию.

  2. Установить gem install ruby-oci8

При доступности к БД Oracle, мы можем выполнить такой скрипт:

require 'oci8'
db = OCI8.new(login, password, host/db)
Post.all.each do |post|
  cursor = db.parse("INSERT INTO POST (POST_NUM, TITLE)
                    VALUES (:post_num, :title)"
)
  cursor.bind_param(':post_num', post.id)
  cursor.bind_param(':title', post.title)
  cursor.exec
end
db.commit

Небольшое замечание: в сам SQL запрос нельзя вставить значение через #{psot.id} и #{post.title}, для этого существует метод указателя :bind_param. Существуют различные способы для биндинга переменных в запрос (больше способов в документации).
Чтобы данные сохранились, необходимо выполнить db.commit.

Источник: rubyflow.ru

Как добавить заголовок к запросу Rack::Test

Райн Бигг (Ryan Bigg) написал короткий, но полезный пост о том, как установить нужный заголовок в тестах использующих Rack::Test.

Быстрый ответ выглядит так:

it "test" do
  header 'Test-Header', 'Test value'
  get '/test'
  expect(last_response.status).to eq(200)
end

Готово! Вы установили заголовок Test-Header со значением "Test value".

Немного подробнее в статье "Add header to Rack::Test request".

Источник: rubyflow.ru

Вход для пользователей

Новые пользователи