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

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

order_query для поиска следующих записей

order_query находит следующие и предыдущие записи ActiveRecord относительно данной.

Например, есть записи отсортированные по приоритету. Их 10,000! Если пользователь смотрит на страницу отдельной записи, хочется показать ему ссылки на следующую и предыдущую запись.

order_query позволяет эффективно получить эти записи, используя только LIMIT и WHERE, но не OFFSET:

class Post &lt; ActiveRecord::Base
  include OrderQuery
  order_query :order_list, [
    [:pinned, [true, false]],
    [:published_at, :desc],
    [:id, :desc]
  ]
end

Теперь можем пользоваться:

# get the order object, scope default: Post.all
p = Post.find(31).order_list(Post.published) #=&gt; OrderQuery::RelativeOrder&lt;...&gt;
p.before     #=&gt; ActiveRecord::Relation&lt;...&gt;
p.previous   #=&gt; Post&lt;...&gt;
p.position   #=&gt; 5
p.next       #=&gt; Post&lt;...&gt;
p.after      #=&gt; ActiveRecord::Relation&lt;...&gt;

Секретный соус в генерируемом WHERE, который исключает все предыдущие или следующие записи:

-- post: pinned=true published_at='2014-03-21 15:01:35.064096' id=9
SELECT "posts".* FROM "posts"  WHERE
  ("posts"."pinned" = 'f' OR
   "posts"."pinned" = 't' AND (
      "posts"."published_at" &lt; '2014-03-21 15:01:35.064096' OR
      "posts"."published_at" = '2014-03-21 15:01:35.064096' AND "posts"."id" &lt; 9))
ORDER BY
  "posts"."pinned"='t' DESC,
  "posts"."pinned"='f' DESC, "posts"."published_at" DESC, "posts"."id" DESC
LIMIT 1

Остальное на Github.

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

Гем-хелпер для построения Slug параметров

the_string_to_slug - обеспечивает параметризацию и транслитерацию строки, помогает строить slug'и для урлов.

Все выполняется нативными средствами i18n - без полного набора средств гема russian, который как правило подключают для подобных целей

Если нужна именно генерация слагов, без других возможностей gem russian - то этот гем может оказаться кстати

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

Курс по Ruby on Rails от Злых марсиан

29, 30 марта и 1 апреля в Москве Злые марсиане проводят курс по Ruby on Rails.

В этом году мы решили полностью переработать курс, чтобы сделать его еще круче.

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

Равиль и Лёша объясняют практическое задание по Rack

На курсе мы углубляем понимание работы Rails, делимся опытом, который мы получили в крупных проектах, даем полезную выжимку знаний и развеиваем популярные заблуждения. Иными словами, за короткий срок «прокачиваем» разработчиков на Ruby on Rails, тимлидов и технических директоров Rails проектов.

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

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

Курс "Профессиональная разработка на Ruby on Rails"

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

Курс предназначен для тех, кто уже знает основы Ruby on Rails и хочет стать уверенным разработчиком и найти работу в этой области или начать создавать свои проекты на этом фреймворке.

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

Обучение на курсе будет практическим, т.е. все участники будут разрабатывать реальное приложение и на этом отрабатывать такие навыки и знания, как:

  • TDD/BDD
  • Git flow
  • написание хорошего кода
  • разработка правильной архитектуры
  • Множество стандартных и не очень gem'ов
  • Background jobs
  • REST API
  • и прочее..

Все подробности и регистрация здесь

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

Rails Expert Day

29 марта в Казани при организации Provectus пройдет конференция Rails Expert Day, посвященная разработке на Ruby.

Наши спикеры:

- Николай Рыжиков, тренер ScrumTrek

Технический лидер (художественный руководитель) команды "health samurai" (waveaccess/hospital-systems), которая уже 6 лет делает на Ruby медицинские корпоративные приложения для США. Активист питерского руби сообщества и мета-сообщества «piter-united».

Тема доклада: «Clojure для рубистов и не только»
Clojure - современный "боевой" диалект lispа, который может исполняться на JVMах & JSVMах (ClojureScript). В clojure реализованы эффективные персистентные (иммутабельные) структуры данных (vector, hash-map, list, set) и поощряется функциональное и мета-программирование.
Clojure написал один из молодых современный IT-гениев - Rich Hickey. Даже если вы не будете писать на clojure, то сможете черпать вдохновение из идей этого "мощного" человека.

В докладе помимо эмоциональных лозунгов будет предоставлено легкое введение в clojure - синтаксис (которого почти нет), макросы, экосистему, библиотеки для web разработки, основные источники информации.

- Руслан Деревякин, Java/Grails/RoR Developer в Provectus IT

Ведущий инженер с опытом разработки на Java EE, Python (Django), Grails, Ruby On Rails.

Тема доклада: «Разработка Web приложений на GRails»
Grails - фреймворк для быстрой разработки веб приложений, объединяющий в себе инфраструктуру Java EE (Sping MVC, Hibernate, Maven и т.д.) и современный подход Ruby on Rails.
В докладе будут рассмотрены особенности, преимущества и недостатки Grails в сравнении с другими популярными Web-фреймворками.

-Константин Макарычев, Full Stack Developer в Provectus IT

В Provectus IT Константин является техническим лидером в JavaScript и Objective-C разработке.

Тема доклада: «Backbone.js + Marionette.js tips & tricks»
Типичные ошибки и лучшие практики разработки сложного динамичного одностраничного интерфейса с использованием Backbone.js.
Как не перемудрить, успеть к дедлайну и выжать максимум продуктивности из данной архитектуры.

-Кирилл Мокевнин, руководитель филиала undev.ru в Ульяновске

Кирилл создает инженерную культуру компании и несет в массы XP, DDD, DevOps. Евангелист ментального программирования, Ruby ниндзя, докладчик на РИТ, devconf и других конференциях. Последние годы активно занимается обучением и немного преподаванием. Соорганизатор конференции nastachku.ru. В свободное время пишет игровую систему на erlang/js для нестандартного обучения программированию.

Тема доклада: «Архитектурные практики»
Как создавать гибкие и легко поддерживаемые приложения на rails. Поговорим об иерархии контроллеров и моделей, проектировании и версионировании api, взаимодействии с внешними сервисами, о практиках тестирования, об acl и scope policy, о репозиториях и типах. Пробежимся по нескольким очень полезным, но далеко не всем известным гемам, а так же затронем DDD, CQS и принципы ООП дизайна.

Участие бесплатное, регистрация обязательна.
Начало мероприятия: 11:00 (регистрация)
Место проведения уточняется.

Информационный партнер:

За дополнительной информацией обращайтесь:
Татьяна Козовая, PR-менеджер в Provectus IT
+38 096 237 06 46, Skype: tkozovaya

alt text

С нетерпением ждем вас на нашем мероприятии!

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

Деплой Ruby on Rails проектов через веб-интерфейс

Зачастую, перед разработчиками RoR встает необходимость централизованного деплоя приложения на продакшн сервер. Конечно, на помощь приходит мощное средство capistrano, но оно не позволяет вести историю деплоев, что бывает необходимо в командах c достаточно большим количеством разработчиков. Ниже будет рассмотрен процесс настройки веб-приложения, которое позволяет упростить эту задачу и сделать выкатку новой версии в «два клика».

Нам потребуется приложение, код которого находится на github.com. Процесс настройки capistrano опустим, в сети много примеров как это делается.

Итак, забираем код:

git clone <script type=\"text/javascript\">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%67%69%74%40%67%69%74%68%75%62%2e%63%6f%6d%22%3e%67%69%74%40%67%69%74%68%75%62%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))</script>:joelmoss/strano.git

также, можно воспользоваться форком от компании Express42, где sidekiq заменен на старый добрый resque.

Подготавливаем файл database.yml и размещаем его в директории config.
Переходим в директорию strano и запускаем script/bootstrap. Скрипт практически все сделает за нас. Скорее всего, при установке джемов могут возникнуть ошибки, связанные с отсутствием определенных хедеров в системе. В моем случае было необходимо:
1) прописать gem ‘pg’ в Gemfile, потому как использую я postgresql
2) для успешного бандлинга выполнить команду:

gem install debugger-ruby_core_source

Проверим, что все работает:

bundle exec rails s

Самое время перейти к конфигурированию нашего инструмента. Для этого скопируем файл config/strano.example.yml в config/strano.yml. Здесь нам необходимо указать всего три переменные:
1) публичный ключ машины, где мы развернули наш инструмент деплоя (public_ssh_key)
2) клиентский идентификатор приложения и его секретный ключ на github.com: github_key и github_secret соответственно.
Для получения последних двух параметров необходимо создать приложение на гитхабе, указав там домен, где будет расположен ваш веб-интерфейс.

Самым сердцем нашего инструмента будет фоновый воркер, который собственно и будет запускать все задачи. Запустим его:

bundle exec sidekiq

На этом настройка закончена. Стоит лишь сказать, что не лишним будет закрыть basic_auth`ом домен деплоилки, потому как аутентификация производится через github и мне не удалось заставить работать strano для ограничения лиц, которым приложение должно давать доступ.

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

Оригинал http://blog.rubyruby.ru/blog/2014/02/17/deploy-ruby-on_rails_via_browser/

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

spec "helper"

Замечательная статья Мэтью Паркера (Matthew Parker), Pivotal Labs, заставляющая задуматься о том, что зачастую мы используем слишком много зависимостей даже там, где они порой не нужны.

Читайте статью "Spec “Helper”" в блоге Pivotal Labs.

P.S. Так же рекомендую обратить внимание на другие статьи Мэтью - pivotallabs.com/author/mparker

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

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