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

Ansible - как оркестровка для серверов с Ruby on Rails на борту

В этой статье мы поговорим о таком важном процессе, как подготовка сервера для размещения RoR приложения. Скорее всего, каждый веб-разработчик сталкивался с определенными трудностями развертывания среды для своего детища. И несмотря на то, что в арсенале имеется мощный инструмент capistrano, перед его использованием необходимо подготовить только, что проинсталлированную систему. Пусть подготовка и не является трудным процессом, но уж скучным точно. Также немаловажно учесть, что многие проекты могут иметь версионную зависимость определенного софта. Например, postgresql 8.4 или специально собранную версию ffmpeg 1.1.15 c libfaac 1.28. Кроме того, что определенные нюансы могут находится на десятках серверов, тяжело вести учет такого зоопарка.

На сегодняшний день, существует несколько инструментов способных облегчить жизнь системным администраторам. А именно chef, ansible, puppet, salt. Эти продукты активно применяются так называемыми DevOps-инженерами для автоматизации управления конфигурациями. Вообще идея конфигурирования системы в автоматическом или полуавтоматическом режиме, может существенно помочь в борьбе с нарастающей сложностью и надвигающемуся хаосу впринципе.

Как же ansible решает эту проблему?

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

[webservers]
адрес хоста1
адрес хоста2
адрес хоста3

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

ansible-playbook -i hosts playbook.yml

playbook.yml – плейбук с набором действий которые необходимо произвести

hosts – инвертарный файл содержащий перечнь хостов.

Для удобного тестирования плейбуков, удобно использовать виртуальные машины, особенно если управлять ими с помощью Vagrant, который в свою очередь имеет возможность использования Ansible в качестве provisioner`а.

Рассмотрим пример плейбука:

---
- hosts: webservers #Указываем группу хостов
  user: vagrant #пользователь под которым ansible будет логиниться
  sudo: yes
  vars_files:
    - vars/defaults.yml #Файл, содержащий переменные которые нам потребуются, например расположения директорий

  roles: # Блок ролей, у нас пока одна роль
    - user

Здесь надо сказать отдельно про роли. В данном случае роль – это выделенная директория с перечнем задач(tasks) и набором шаблонов(templates). Это очень полезный прием, который позволяет разделять настройку на определенные этапы\части. В данном примере есть роль user, ответственная за создание\настройку пользователя.

Пользователь.

Все роли вынесены в отдельную директорию roles. В нашем примере роль user выглядит следующим образом:

roles/user – директория роли

roles/user/tasks – директория задач

roles/user/tasks/main.yml – точка входа в роль, здесь указываются какие файлы включены в роль. Для нас файл будет следующим:

- include: user.yml tags=user

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

roles/user/tasks/user.yml – файл содержащий перечень задач, выполняемых в рамках нашей роли.

roles/user/templates – директория содержащая конфигурационные файлы, сертификаты. Возможно использование шаблонизатора jinja2.

Рассмотри файл user.yml, так как именно он содержит непосредственные задания для выполнения:

---

  - name: create deploy user
    user: name=deploy comment="deploy user" generate_ssh_key=yes ssh_key_bits=2048 state=present password={{ password }} shell=/bin/bash

  - name: copy my ssh key to the user's .ssh directory
    action: template src=my_current_machine.pub dest={{home_dir}}/.ssh/authorized_keys mode=0700 owner={{deploy}} group={{deploy}}

  - name: copy known hosts to deploy user
    action: template src=known_hosts dest={{home_dir}}/.ssh/known_hosts owner={{deploy}} group={{deploy}}

  - name: copy deploy private key to VM
    action: template src=deploy_rsa dest={{home_dir}}/.ssh/deploy_rsa owner={{deploy}} group={{deploy}}

  - name: copy deploy public key to VM
    action: template src=deploy_rsa.pub dest={{home_dir}}/.ssh/deploy_rsa.pub owner={{deploy}} group={{deploy}} mode=0644

  - name: copy ssh_config github
    action: template src=ssh_config dest={{home_dir}}/.ssh/config owner={{deploy}} group={{deploy}}

  - name: copy sudoers
    action: template src=sudoers dest=/etc/sudoers

Теперь по-порядку:

1). Создаем пользователя и назначаем ему пароль. Единственное, что нужно, так это описать переменную password в vars/defaults.yml. Значением этой переменной будет не сам пароль а лишь хеш, который легко создать с помощью команды:

python -c 'import crypt; print crypt.crypt("This is my Password", "$1$SomeSalt$")'

2). Копируем публичный ключ машины(здесь в зависимости от Ваших нужд) откуда запускаем наш плейбук в authorized_keys – это позволит нам заходить на целевую машину без пароля. переменная home_dir должна быть описана в vars/defaults.yml.

3). Копируем файл known_hosts который заранее содержит записи-“отпечатки” например гитхаба или битбакета.

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

5). Копируем ssh_config, опять же для работы с гитхабом с содержимым:

Hostname github.com
  IdentityFile /home/deploy/.ssh/deploy_rsa
  StrictHostKeyChecking no

6). Разрешаем sudo для нашего пользователя копированием файла sudoers где фигурирует строка:

deploy    ALL=(ALL:ALL) ALL

Проделанные шаги подготовят нашего пользователя для дальнейшей работы.
Дальнейшая настройка веб-сервера и базы данных на странице:
http://blog.rubyruby.ru/blog/2014/07/01/ansible_as_orchestration_for_ruby_on_rails/

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

Невероятный Chef: настройка сервера и деплой приложения в один клик

В этой статье рассматривается необычный способ деплоить веб-приложения на Ruby on Rails: при помощи системы управления конфигурациями Chef. Пошаговое руководство, от установки и настройки Chef до деплоя полноценного Rails приложения на Digital Ocean в один клик.

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

Пресс-релиз: Итоги Svitla Ruby Conference 2014

alt text

31 мая – 1 июня 2014 года прошла вторая киевская конференция о Ruby и Ruby on Rails – RubyC. Более 250 рубистов собрались послушать доклады лучших Ruby девелоперов из Украины, США, Бразилии, Испании, Великобритании, Германии и России. Организатор, компания Svitla Systems, выражает признательность всем участникам конференции, генеральному спонсору – компании SoftServe, Ruby-спонсорам: DataArt и Global Logic, а также всем медиа-партнерам, благодаря которым состоялось одно из самых ярких Ruby мероприятий в Украине.

Традиционно видео выступлений всех спикеров RubyC доступны на сайте конференции http://rubyc.eu/posts/14.

Как же проходила конференция RubyC-2014?

В первый день, после короткой регистрации и вкусного утреннего кофе RubyС началась с презентации Джереми Эванса и его доклада "Give-and-Go with PostgreSQL and Sequel". Джереми был одним из немногих, кто презентовался дважды. Слайды его второй презентации доступны на его сайте http://code.jeremyevans.net/

Одним из самых ярких и забавных спикеров однозначно стал британец Бен Ловелл. Его выступление “Building fast, testable and sane APIs with rails” точно стоит просмотреть.

Особенно приятно было увидеть презентации украинских рубистов, большинство которых, тем не менее, прозвучали на английском языке. Марат Каменщиков, представитель Svitla Systems презентовал тему "How we got max speed for JSON processing in a Rails API app", которая вызвала большое количество вопросов у слушателей. Евгений Пирогов и Богдан Гусев представили темы "Communication problems within complex projects: lessons learned from real life" и "How to create parsers in ruby. Rails Router as example".

Одно из самых необычных по своей сути выступлений однозначно принадлежит Кириллу Тимофееву из компании DataArt. Как и обещал Кирилл, ни один мозг не пострадал, но лямбда исчисления многим вскружили голову. Воспринимать такую сложную информацию рекомендуем только с комментариями.

Последний спикер первого дня – Хавьер Рамирес, несмотря на оригинальный испанский акцент, привлек всеобщее внимание. Даже Бен Ловелл отметил его выступление в Twitter. Смотрите видео презентацию на сайте www.rubyc.eu.

В перерывах между выступлениями спикеров и во время кофебрейков было очень весело. Массажисты из компании Relax office помогали расслабить мышцы шеи и взбодриться. Кроме того в распоряжении участников были игры и моментальные конкурсы от партнеров.

Второй день был более насыщен выступлениями иностранных гостей. Открывал Стив Клабник, один из самых известных девелоперов и core-committer’ов Ruby on Rails, частый участник мировых IT конференций. Будьте внимательны, читая презентацию Rust for Rubyists,  а лучше изучайте вместе с видео.

Узкая направленность темы Дэвида Хеннера была интересна не всем, но точно полезна тем, кто работает в направлении Ecommerce. Презентацию "Architecting Ecommerce Huge objects, how and when to refactor" почитать можно на SlideShare.

Спикер, приезда которого ожидали с особым нетерпением – Тимофей Цветков (Россия). Но все опасения были напрасны, Тимофей приехал и подарил один из самых увлекательных топиков в этом году. Его презентация доступна по ссылке http://www.slideshare.net/2kan/gc-in-ruby-rubyc-kiev-2014

Также хочется отметить Александра Оливера (Бразилия), впервые посетившему Украину, надеемся не в последний раз, и более опытного  Константина Теннхарда (Германия), которому выпала честь закрывать конференцию. Оба спикера были окружены вопросами к докладам даже во время вечеринки в боулинг клубе "Большевик". Закрытие продолжалось два часа, но казалось, промелькнуло за пару минут.

Благодарим всех за участие и поддержку. Увидимся в следующем году!

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

ActiveStoreAccessor

С выходом Rails 3.2 ActiveRecord получил замечательную функциональность в виде ActiveRecord::Store. В Rails 4.0 была также добавлена поддержка hstore. Однако даже на данный момент(Rails 4.1.1) любой сериализированный атрибут хранит только string значение. С active_store_accessor появляется возможность задать сериализированный атрибут как число, дату или булевое значение.

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

Обзор значимых изменений в RSpec 3

Выход RSpec 3 уже совсем близко :) На данный момент доступен первый релиз-кандидат (RSpec 3.0.0 RC1).

Проделана огроная работа и третья версия несет большое количество изменений и нововведений. Узнать о самых значительных из них можно в статье "Notable Changes in RSpec 3".

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

7 продвинутых возможностей Rake

Авди Гримм (Avdi Grimm) делится советами использования возможностей Rake:

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

Вложенные слои в Rails

Наверное, сложно найти Rails разработчика, который не знает что такое layouts в Rails. Однако, когда перед нами стоит задача сделать вложенные слои (например, слой отдельной группы страниц, который будет находится в контенте слоя сайта), решение может получиться недостаточно гибким без этих знаний

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

DevConf 2014

14 июня в Москве состоится конференция для профессиональных разработчиков DevConf 2014, состоящая из секций: Python, Ruby, PHP, Mobi, Javascript и общей секции.

Новинка этого года - отдельная секция Storage - где организаторы собрали авторов PostgreSQL, MySQL, Percona, Sphinx, Tarantool. Кроме этого всех участников познакомят с новой БД - Neo4J!

15 июня пройдут эксклюзивные мастер-классы:

  • [Highload] Разработка крупного масштабируемого web 2.0 проекта с нуля (соц.сеть на 100 млн пользователей), Дмитрий Бородин - программист и архитектор ПО.
  • Sphinx Search - для профи, Андрей Аксенов, автор Sphinx
  • Демонстрация Laravel в реализации платежного сервиса, Новиков Михаил CTO в FINTECH_FAB
  • Полный список мастер-классов

Организаторы конференции - сообщества разработчиков http://phpclub.ru,, http://railsclub.ru, http://python.su, http://moscowjs.ru, http://moscowdjango.ru

Партнеры конференции: IT-soft, журнал Хакер, TVM.ru

Инфопартнеры: Linux.org.ru, Python.SU, OpenNet.ru, PHP.ru, PHP.Net, Python developers (VK), SemSocial.ru, Apps4All.ru, RubyJobs.ru, RubyFlow.ru, Tokarchuk.ru.

На доклады DevConf 2014 - поданы более 35 заявок, сейчас проходит активное голосование. Какие доклады останутся в программе - решать Вам!

Секция Ruby

  • От ruby к clojure
  • Отладка Ruby приложений
  • Нужна ли CMS на рельсах?

Секция Storage:

  • Schema-less PostgreSQL
  • Скажите, граф... Или об использовании NeoJ4 в веб-проекте
  • Оптимизация производительности большой унаследованной PostgreSQL базы
  • Круто как в гугле. Поисковые сервисы на основе Sphinx
  • Проблемы использования MySQL на современном оборудовании (Percona)
  • Инфраструктура для MySQL. Облака против ржавых серверов.
  • NoSQL атакует: JSON функции в MySQL сервере
  • Tarantool 1.6 Primer

Секция Common

  • Разработка RESTful API with all bells and whistles (Яндекс-Диск)
  • Go: аналитика Рунета в реальном времени
  • Биллинг в большом международном проекте (Badoo)
  • StatsCollector, или "Мама! Он и меня посчитал!" (Badoo)
  • В стиле IP. Распределенная команда в период революций.
  • Страх и ненависть в платежных системах
  • Формирование инженерной культуры
  • The Big Social Bang Theory: Социализируй это!
  • Scratch: учим своих детей программировать

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

Faraday middlewares для работы с UTF

Написал две middlewares для гема Faraday. Позволяют нормализовать приходящий UTF и удалить в нём все невалидные символы.

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

RubyC-2014 представляет эксклюзивное интервью со Стивом Клабником

До конференции RubyC осталось чуть больше месяца. Организаторы напоминают, что продажа билетов Early Birds скоро заканчивается и продолжают знакомить участников со спикерами RubyC. На очереди Стив Клабник (Steve Klabnik), личность очень известная благодаря его активному участию в жизни мирового Ruby сообщества. В рейтинге rubyscore.com Стиву присвоен статус Almighty developer, а еще он RubyHero 2011 года, не говоря уже о том, что на Github у Стива более полутора тысяч фолловеров и он участвует в большинстве IT конференций по всему миру. На RubyC Стив презентует тему Rust for Rubyists.

1. Какие «инструменты» используешь в своей практике? (ОС, текстовый редактор,и т.д.)

Использую #! Linux, чаще Arch Linux, попробовал #! чтобы не тратить время. Также использую мозаичное размещение окон, обычно XMonad, но #! идет в одном пакете с OpenBox, и он мне тоже вполне подходит. Около 80% своего времени провожу в Firefox и xterm. Внутри xterm, использую bash, vim, git, и irssi.

Около 10% времени провожу в Thunderbird, для переписки. Процентов 8% времени уходит на инструменты защиты личных данных, например Tor и GPG, и 1% для всякие разности. Иногда когда нужно поправить изображение и открыть GIMP или нужно открыть какой-то документ с помощью LibreOffice. Для быстрых сообщений - Pidgin. Презентации пишу в Reveal.js или в "rabbit". На iPhone стоит iMessage и Twitter app. На iPad - Duolingo и игра ReRave. Также начал использовать Chromebook Pixe для ежедневной работы.

2. Ты уделяешь много времени обучению людей. Каковы твои личные причины?

Обучение других это стратегически верный способ позитивно влиять на мир. Я могу работать только 24 часа в сутки, но если я обучу двух людей они могут работать параллельно, то есть 48 часов вместо моих 24. Хотя, как известно, бывает сложно согласовать действия ;)

3. Назови проект, которым Ты гордишься?

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

4. Какой стартап, написанный на RoR, тебя больше всего впечатлил? Возможно, ты лично принимал участие в разработке?

Когда-то я работал над CloudFab, с него началось мое знакомство с Rails! В целом я не обращаю внимания на технологии, которыми пользуются компании, пока они производят качественный продукт, могут и Rails использовать. Компания, в которой я сейчас работаю, использует Python!

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

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

6. Использовал ли ты принципы Hypermedia API в проектах? Приведи несколько примеров.

Да, использую. На работе мы используем hypermedia с JSON API чтобы усилить наше API. Можете посмотреть:

# curl <a href=\"https://api.balancedpayments.com/cards/CC5cX8TtoEgQ7nY3a8pj5D7f/debits\">https://api.balancedpayments.com/cards/CC5cX8TtoEgQ7nY3a8pj5D7f/debits</a> \
# -H "Accept: application/vnd.api+json;revision=1.1" \
# -u ak-test-2qEM0Znvd8LIVbZ01LbFHvHgab4fkNr3c: \
# -d "appears_on_statement_as=Statement text" \
# -d "amount=5000" \
# -d "description=Some descriptive text for the debit in the dashboard"

{
  "debits": [
    {
      "status": "succeeded",
      "description": "Some descriptive text for the debit in the dashboard",
      "links": {
        "customer": "CU4K1Vmh90f3OqCXn3A7Gu3P",
        "source": "CC5cX8TtoEgQ7nY3a8pj5D7f",
        "order": null,
        "dispute": null
      },
      "updated_at": "2014-04-29T14:37:00.570615Z",
      "created_at": "2014-04-29T14:36:59.834991Z",
      "transaction_number": "W403-223-1027",
      "failure_reason": null,
      "currency": "USD",
      "amount": 5000,
      "failure_reason_code": null,
      "meta": {},
      "href": "/debits/WD5CKf2TAOxl4SD6rRUcxVnH",
      "appears_on_statement_as": "BAL*Statement text",
      "id": "WD5CKf2TAOxl4SD6rRUcxVnH"
    }
  ],
  "links": {
    "debits.customer": "/customers/{debits.customer}",
    "debits.dispute": "/disputes/{debits.dispute}",
    "debits.source": "/resources/{debits.source}",
    "debits.order": "/orders/{debits.order}",
    "debits.refunds": "/debits/{debits.id}/refunds",
    "debits.events": "/debits/{debits.id}/events"
  }
}

7. Ты часто упоминаешь об ответственности, проверки кода и программирования для развлечения. Как часто ты тестируешь свои проекты, какие методы используешь?

Я стараюсь постоянно писать тесты, но все равно мой код не идеален. Чаще использую MiniTest, так как он включен в Ruby.

8. Каков, на твой взгляд, наиболее эффективный и быстрый путь стать популярным Ruby-программистом - создание собственных Ruby проектов или участие в разработке проектов, уже пользующихся популярностью?

Ха! Я не уверен, поскольку популярность это довольно непостоянная вещь. Я веду много блогов и стараюсь помогать другим. Вот и все.

9. Известно, что большинство успешных разработчиков начинали программировать с детства (до 10 лет). Какой язык программирования ты бы посоветовал для обучения детей?

Я думаю, что Ruby что отличный язык, для начинающих, он очень гибок. Питон также имеет много материала, для начинающих. Для детей, думаю, отлично подойдет Scratch.

10. Ты как-то рекомендовал программистам читать книги по философии. Что еще, может, посоветуешь?

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

Спасибо до встречи на RubyC!

Партнеры конференции в этом году

  • Портал www.rabota.ua является ведущим профессиональным порталом Украины, услугами которого пользуется абсолютное большинство национальных и международных компаний.
  • RubyNoName подкаст — русскоязычный подкаст о языке Ruby и всем, что с ним связано, будь то веб-фреймворк Rails, Sinatra, очереди сообщений, базы данных или даже системы управления конфигурацией Chef или Puppet.
  • Ассоциация «Информационные технологии Украины», основана ведущими IT компаниями с целью консолидации усилий по продвижению на внешних рынках конкурентоспособной продукции украинских компаний.
  • Портал Education Ukraine – новый проект ассоциации «Информационные технологии Украины», созданный для объединения усилий участников рынка с целью развития IT образования и подготовки специалистов высокого класса.
  • Code School обучает веб технологиям с удобствами, все вам понадобится это браузер для просмотра видео-уроков.

Организатор RubyC — Svitla Systems Inc., американская аутсорсинговая компания, которая занимается разработкой приложений на Ruby, .NET, PHP, Java, Magento, Flash, а также мобильных приложений.

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

RubyC-2014 представляет эксклюзивное интервью с Джереми Эвансом

В преддверии RubyC, которая состоится в Киеве 31 мая - 1 июня 2014 года, организаторы предлагают поближе познакомиться со спикерами конференции.

Ниже первое интервью — с Джереми Эвансом (Jeremy Evans) — ведущим разработчиком калифорнийского государственного аудиторского бюро (California Bureau of State Audits). Подробнее о его теме Deep Dive into Eager Loading Limited Associations можно узнать на сайте http://rubyc.eu/#speakers, а о самом Джереми - из его ответов.

1. Какой инструментарий ты чаще всего используешь в своей работе?

В качестве операционной системы на всем оборудовании я использую OpenBSD. Большинство людей используют OpenBSD из соображений безопасности, и для меня это тоже важно, но приоритетом является легкость в администрировании и стабильная работа. Я использую OpenBSD с 2002 года и полностью перешел на эту ОС в 2008 году. В 2010 стал разработчиком OpenBSD. Сейчас отвечаю за портирование Ruby для OpenBSD, включая JRuby и Rubinius. В качестве текстового редактора я использую Vim. И до сих пор, даже после нескольких лет эксплуатации, я использую только "чистый" Vim (без плагинов). Иногда использую SciTE для более простых задач, где не надо много редактировать. В качестве графической оболочки я использую fluxbox, он простой и удобный, особенно мне нравится, как организованы оконные вкладки и клавиши быстрого доступа.

2. Почему ты уделяешь столько времени обучению людей?

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

3. Каким проектом ты гордишься?

В первую очередь работой над Sequel. Я взялся за проект в Марте 2008, после того как месяц сам им пользовался. Это самый большой проект, которым я занимался. Проблема была в том, что, несмотря на хорошую общую архитектуру Sequel, его реализация оставляла желать лучшего, а документации практически не было. Тем не менее, благодаря хорошему "покрытию" кода тестами, я смог качественно реорганизовать и улучшить код. Мне кажется, мне удалось превратить Sequel из простой библиотеки с быстрым доступом к БД (ORM, object relational mapper) в один из лучших примеров таких библиотек для Ruby. Может, он никогда не станет самым популярным Ruby ORM, поскольку это не базовый ORM для Rails, но он уже заслужил уважение среди многих рубистов.

4. Какой стартап, написанный на RoR, Вас больше всего впечатлил? Возможно, Вы лично принимали участие в разработке?

Сам с такими стартапами не работал, поэтому назову Heroku. Они активно используют Sequel в своих внутренних системах, и к тому же хостят многие мои веб-приложения бесплатно.

5. Как часто ты тестируешь код в своих проектах? Какие инструменты используешь?

Тестирую код всех своих проектов перед каждым коммитом или, в крайнем случае, перед размещением изменений на GitHub. Для Sequel тестирование особенно тщательное, я проверяю около 6 реализаций на ruby, более 10 адаптеров баз данных, более 10 баз данных, общее количество групп тестов (test suites), наверное, добегает до 100. Проверяя саму библиотеку, обычно использую RSpec. Стиль тестирования не меняю с момента появления RSpec 1, и многие мои библиотеки работают на RSpec 1, 2 или 3. Еще использую Travis-CI для Sequel или других проектов. И хотя Travis часто не дает 100% точные результаты, пропуская существующие ошибки, я думаю его использование оптимально в большинстве случаев.

6. Каков, на твой взгляд, наиболее эффективный и быстрый путь стать популярным Ruby-программистом - создание собственных Ruby проектов или участие в разработке проектов, уже пользующихся популярностью?

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

7. Известно, что большинство успешных разработчиков начинали программировать с детства (до 10 лет). Какой язык программирования ты бы посоветовал для обучения детей?

Я в детстве не очень увлекался программированием (разве что, какое-то базовое графическое программирование, когда мне было около 10 лет), чуть больше - в студенческие годы (C++ and Java), но профессионально программировать начал в 23. Наверное, я был бы лучшим программистом, если бы начал раньше. Я не уверен, что я бы посоветовал своим детям попробовать программирование вообще, если они не проявляют к этому интерес. Тем не менее, если они захотят изучать программирование, я бы посоветовал начать с Ruby или Python.

8. Есть профессиональные советы?

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

9. Какие дальнейшие планы после RubyC?

Вернусь к работе с Sequel. Скорее всего, вернусь к изучению новых языков, я давно этим не занимался, последний раз пытался разобраться с Io. В списке - Smalltalk, Nimrod, Elixir и Forth. Обычно я пытаюсь реализовать библиотеку или приложение на новом языке. Приложение должно быть достаточно небольшим для того, чтобы не занять много времени, но достаточно большим для освоения языка.

Спасибо до встречи на RubyC!

Партнеры конференции в этом году

  • Портал www.rabota.ua является ведущим профессиональным порталом Украины, услугами которого пользуется абсолютное большинство национальных и международных компаний.
  • RubyNoName подкаст — русскоязычный подкаст о языке Ruby и всем, что с ним связано, будь то веб-фреймворк Rails, Sinatra, очереди сообщений, базы данных или даже системы управления конфигурацией Chef или Puppet.
  • Ассоциация «Информационные технологии Украины», основана ведущими IT компаниями с целью консолидации усилий по продвижению на внешних рынках конкурентоспособной продукции украинских компаний.
  • Портал Education Ukraine – новый проект ассоциации «Информационные технологии Украины», созданный для объединения усилий участников рынка с целью развития IT образования и подготовки специалистов высокого класса.

RubyC продолжает активно искать партнеров - http://rubyc.eu/#sponsors и спикеров http://rubyc.eu/#speakers. Присоединяйтесь!

Следите за новостями на twitter.com/rubyc_eu и www.facebook.com/RubyC.eu

O конференции RubyC

Впервые RubyC состоялась в 2011 году, став одним из наиболее значимых событий для руби-сообщества того года, поскольку собрало вместе не только высококлассных докладчиков из разных уголков земного шара, но и около 200 посетителей из  Украины, России, Беларуси, Латвии и США . Спикерами RubyC среди прочих стали: Райан Бигг (Австралия), Стив Клабник (США), Джонас Никлас (Швеция), Дарси Лейкок (Австралия), Алексей Найден (Россия) и многие другие. Подробнее о том, как прошла первая конференция RubyC можно узнать тут.

Организатор RubyC — Svitla Systems Inc., американская аутсорсинговая компания, которая занимается разработкой приложений на Ruby, .NET, PHP, Java, Magento, Flash, а также мобильных приложений.

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

Оповещение о деплоях через стандартные средства мак оси

Я создал гем для оповещения всех членов команды разработки проекта о деплоях используя маковский Notification Center. Чтобы начать пользоваться нужно всего лишь зарегистрироваться на сайте https://space-notice.com/ и установить гем https://github.com/evrone/capistrano-team_notifications .

Поддерживается Capistrano 3 и 2.

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

HackDay City в Петербурге: от идеи до прототипа проекта для города за 48 часов!

С 25 по 27 апреля в Санкт-Петербурге пройдет HackDay City – первое масштабное мероприятие, ориентированное на решение проблем города и повышения качества городской среды. За 48 часов более 100 участников объединятся в команды и предложат свои ИТ-проекты для того, чтобы сделать Санкт-Петербург более комфортным для жителей.

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


Опыт крупных городов и целых стран показывает, что решения, предложенные на мероприятиях такого формата, могут быть очень эффективными, т.к. это решения проблем, которые касаются напрямую жителей. Так, например, мобильное приложение WhiteCane (победитель Hack4Good в Нью-Дели) позволяет слепым и слабовидящим людям распознавать лица людей вокруг и их эмоции. Сайт Smallknot позволяет со-инвестировать в локальные малые бизнесы - например, в любимую кофейню или магазинчик, находящиеся в соседнем квартале. Проект Tweets by Beat позволяет жителям Сиэтла (США) узнавать, что происходит у них в районе и оперативно взаимодействовать с полицией. 


Участники могут заранее заявить свои идеи на сайте HackDay City. Те же, у кого нет идей, смогут присоединиться к любому интересному проекту и внести свой вклад в разработку прототипа и последующее развитие проектов. В пятницу вечером участники заявят о своих идеях и соберут команды. Суббота и воскресенье целиком будут отданы разработке прототипов и общению с экспертами, которые будут помогать командам на протяжении всего мероприятия.

В воскресенье вечером команды представят свои прототипы широкой аудитории коллег, менторов и экспертов из России, США и Европы. В рамках мероприятия будут объявлены отдельные номинации о партнеров и спонсоров HackDay City.

"Мы не будем ограничивать участников в областях приложения идей. Главное – чтобы проект был ориентирован на решение существующих проблем в городе. Со своей стороны, мы создадим оптимальные условия для работы и достижения конкретных результатов за 48 часов. Приходите и сделайте что-нибудь полезное для города!" -- Михаил Кулаков, организатор HackDay City.

Участники смогут также побороться за призы в отдельных номинациях от партнеров и спонсоров. Например, в номинации “Лучший проект с использованием данных Aviasales.ru” будут рассмотрены проекты, написанные с использованием API Aviasales.ru и Hotellook.ru, а также Aviasales iOS-SDK, где они могут как лечь в основу сервиса, так и быть использованы для создания дополнительного функционала в проекте любой другой направленности, будь то сервис прогноза погоды или портал о футболе. В номинации “Лучший бизнес-проект” победителя определят эксперты Фонда Развития Интернет-Инициатив (ФРИИ).
Победителем в номинации “Лучшее социальное приложение” от Odniklassniki.ru станет лучшая реализация приложения для обмена впечатлениями, получения новостей от других людей, поиска новых контактов и поддержания связи со старыми знакомыми.


Стоимость участия в HackDay City - 800 рублей, однако любой желающий может написать мотивационное письмо и получить билет бесплатно. Вход на демофест (презентацию прототипов) в воскресенье свободный.


Дата: 25 - 27 апреля

Площадка: «Зона действия» (Лиговский проспект 74)
Регистрация: http://hackday.ru/hackday-city

Старт: 25 апреля (пятница) в 18:30

Организатор: Студия Михаила Кечинова

Спонсоры: Aviasales.ru, ФРИИ, Одноклассники

Партнеры: GitHub, Зона действия, The Village

Контакты:

Михаил Кулаков (менеджер проекта)
+7 (964) 329 67 71, mikhail.kulakov@mkechinov.ru

Дмитрий Зубенко (PR, оперативное взаимодействие)
+7 (905) 288 63 95

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

Сервисные FormObject'ы

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

GutHub source

Пример контроллера:

def create
   @form = UserRegistrationForm.new(User.new(params[:user]))
   @form.bonus_code = 'STARS600'
   @form.submit!
end

Пример объекта:

class UserRegistrationForm &lt; FormLogic::Base
   declare_model_name :user

   property :email, :password, :password_confirmation, to: :user

   virtual :bonus_code

   def while_validation
     if bonus_code.present? &amp;&amp; bonus.nil?
       errors.add(:bonus_code, :invalid)
     end
   end

   def submit!
     user.transaction do
        BonusTransaction.create!
        user.create!
     end
   end

    def bonus
       @bonus ||= Bonus.registration.coded(bonus_code).first
    end
end

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

Первая онлайн-школа программирования Ruby в России

Ruby Ninja School

Мы сделали свою школу программирования, потому что стали получать запросы обучить людей Ruby из разных точек России. И изначально подход, который мы закладывали, был от простого к сложному, от практики только с самой необходимой теорией, потому что нам никогда не нравилась излишняя академичность, можно долго спорить на тему образования, базисных знаний, необходимых для начала, но лучше взять и сделать! Главный принцип нашей школы программирования: для того чтобы научиться надо много делать, а научить может только тот, кто сам много делал.

alt text

Сегодня все преподаватели проекта Ruby Ninja School – это парни, у которых за спиной сотни тысяч строчек кода, написанного для более чем 60-ти коммерческих проектов. То, чему они обучают – реально нужно для решения прикладных задач, а не для написания пузырьковой сортировки или программ по вычислению факториала.
Настоящими программистами-ниндзя становятся только те, кто хочет научиться реальному программированию, и кто готов посвятить этому своё время, поэтому наши программы составлены таким образом, чтобы домашние задания нельзя было не делать, а code review и ответы на вопросы по заданиям занимают со второго занятия около четверти времени обучения.

alt text

Сегодня Ruby Ninja School обучает около 20 студентов ежемесячно, география расположения которых простирается от Владивостока до Варшавы. Эти ребята и иногда девушки ставят перед собой различные цели: перейти на новый язык программирования, разобраться в работе своих подчинённых и понимать , что они делают, начать программировать с нуля, есть даже те, кто просто хотят сделать это своим хобби. Но всех их объединяет то, что они хотят развиваться, а не просто получать знания.

Хочешь узнать о нас подробнее? Заходи на наш сайт rubyninja.ru

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

Svitla Ruby Conference Kyiv, 31 MAY - 1 June 2014

31 мая – 1 июня 2014 года в Киеве пройдет вторая конференция RubyC, посвященная Ruby и Ruby on Rails

Посетить RubyC 2014 будет полезно тем, кто хочет:
- пообщаться с лучшими рубистами со всего мира;
- лучшие варианты практического использования Ruby на примере реальных проектов;
- услышать все о последних трендах в Ruby и Ruby on Rails;
- с пользой провести два дня среди талантливых, умных людей, набраться новых идей и почувствовать вдохновение для дальнейших достижений.

В этом году RubyC вновь собирает звездный состав докладчиков из Америки, Европы и стран СНГ. Среди приглашенных гуру: Стив Клабник (США), Бен Ловелл (Великобритания), Хавьер Рамирес (Великобритания), Александр де Оливера (Бразилия), Дэвид Хеннер (США), Джереми Эванс (США), Константин Теннахард (Германия), а также Богдан Гусев (Украина), Тимофей Цветков (Россия), Евгений Пирогов (Россия).

Подробнее о спикерах и их темах можно узнать на сайте http://rubyc.eu/. Организаторы приглашают всех желающих поделиться своим опытом и стать спикером конференции. Заявки могут быть поданы на сайте конференции. Прием заявок продолжится до конца апреля.

Полезности:
• Продажа билетов уже открыта на сайте конференции!
• Место проведения конференции: БЦ «ИНКОМ», ул. Смоленская, 31-33.
• Рабочие языки конференции – английский, русский, украинский.
• Присоединяйтесь к группам RubyC на Twitter и Facebook.

До встречи на RubyC 2014!

alt text


Впервые RubyC состоялась в 2011 году, став одним из наиболее значимых событий для руби-сообщества того года, поскольку собрало вместе не только высококлассных докладчиков из разных уголков земного шара, но и около 200 посетителей из Украины, России, Беларуси, Латвии и США . Спикерами RubyC среди прочих стали: Райан Бигг (Австралия), Стив Клабник (США), Джонас Никлас (Швеция), Дарси Лейкок (Австралия), Алексей Найден (Россия) и многие другие.

Организатор RubyC — Svitla Systems Inc., американская аутсорсинговая компания, которая занимается разработкой приложений на Ruby, .NET, PHP, Java, Magento, Flash, а также мобильных приложений. Офисы компании находятся в Киеве, Львове, Харькове, Севастополе, Черкассах, Черновцах и Тернополе. Головной офис располагается в Сан-Франциско.
http://svitla.com/

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

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