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

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

transitions - еще одна реализация конечных автоматов на Ruby

Все уже знают, что такое конечные автоматы, поэтому я просто приведу пример DSL ;)

class Product
  include ActiveModel::Transitions

  state_machine do
    state :available # first one is initial state
    state :out_of_stock, :exit => :exit_out_of_stock
    state :discontinued, :enter => lambda { |product| product.cancel_orders }

    event :discontinued do
      transitions :to => :discontinued, :from => [:available, :out_of_stock], :on_transition => :do_discontinue
    end
    event :out_of_stock, :success => :reorder do
      transitions :to => :out_of_stock, :from => [:available, :discontinued]
    end
    event :available do
      transitions :to => :available, :from => [:out_of_stock], :guard => lambda { |product| product.in_stock > 0 }
    end
  end
end

Библиотека transitions имеет большое количество интересных возможностей, которые хорошо описаны в README. Смотрите все подробности на GitHub - github.com/troessner/transitions

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

TheViking 1.0

TheViking - обеспечивает доступ к антиспам сервису Akismet для руби и рельсовых приложений

TheViking это репак гема Viking без поддержки сервиса Defensio (который видимо умер)

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

TheActualLocales released

https://github.com/the-teacher/the_actual_locales

Гем помогает найти только актуальные значения в больших файлах локализации i18n

Проблема

Иногда очень хочется избавится от неактуальных записей в файлах локализации. Но после нескольких месяцев поддержки проекта может оказаться трудным найти актуальные ключи в файлах локализации i18n.

Решение

Этот простой гем патчит методы i18n.translate и i18n.t и сохраняет в отдельный YAML файл все вызванные ключи локализации с их значениями.

Как это работает

  • Установите гем в dev окружение
  • Запустите приложение
  • Посетите нужные страницы для нужных языков
  • Изучите файл лога /log/actual_locale.LOCALE_NAME.yml
  • После получения лога - удалите гем

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

Unread

Unread - это библиотека для управления статусами read/unread объектов ActiveRecord. По заявлению автора, скорость работы - ее основная отличительная особенность.

Кроме невероятной скорости, Unread помогает:

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

Примеры кода и подробное описание принципа работы читайте в README на GitHub - github.com/ledermann/unread.

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

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

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