Обновить
8K+

Ruby *

Динамический высокоуровневый язык программирования

0,6
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Используем Twitter Bootstrap в RefineryCMS

Время на прочтение6 мин
Охват и читатели12K
RefineryCMS — это еще одна RoR CMS. Поддерживает Rails3.2, удобна. Я не стану тут заниматься пересказом пресс-релизов, если интересно — на сайте можно поиграться в демо. Поскольку родилась она не вчера, из коробки поддерживать Twitter Bootstrap не умеет. Есть костыль refinerycms-bootstrap, но меня он не впечатлил. Поэтому я расскажу, как быстро прикрутить bootstrap самому. NB! Эта заметка не предполагает, что вы уже видели RefineryCMS, но и не рассказывает именно о ней: рассказ пойдет строго о прикручивании TB.
Читать дальше →

Что такое ActiveSupport::Notifications и зачем нужны?

Время на прочтение4 мин
Охват и читатели9.9K
ActiveSupport::Notifications – это встроенная в рельсы система уведомлений. Вы можете подписаться на определенные уведомления в Rails и вызывать свой код когда они будут посланы. Это чем-то похоже на ActiveSupport::Callbacks, но работают во всем проекте и события не нужно заранее объявлять.

Читать дальше →

EventMachine ⇒ сбор информации из разных источников с последующей обработкой

Время на прочтение3 мин
Охват и читатели9.3K

Самый простой способ наступить на грабли — использовать асинхронность. Я знаком с программистами, зарекомендовавшими себя как крепкие профессионалы, которые буквально пасовали перед многопоточностью. Для затравки расскажу мою любимую историю про deadlock (прошу прощения за боян, но уж больно хорош). Лет десять назад Associated Press поведало миру, как в аэропорту шведского города Крисианстад пилот пытался посадить пассажирский самолет, однако никто из диспетчеров не ответил на его запрос. Оказалось, что диспетчер еще не вернулся из отпуска. В итоге самолет кружил над аэропортом, пока срочно не вызвали запасного диспетчера, который и
посадил самолет через полчаса. Разбор полетов показал, что причиной стало опоздание самолета. На борту которого и находился тот самый диспетчер, спешивший на работу из отпуска.

Итак, когда мы сталкиваемся с асинхронностью, нам приходится ломать привычную картину в голове: субъективно окружающий нас мир однопоточен. Если мы послали письмо, а через неделю получили ответ, для нас все происходит в пределах одного потока; нам не приходится отвечать за действия респондента и почтальона. А нашему коду — приходится.
Чтобы упростить жизнь программиста, можно использовать паттерн Реактор. Лучшая (на мой взгляд) его имплементация для руби — EventMachine. Но и с ней бывают не очевидные моменты. Об одном из них я и планирую вкратце рассказать.
Читать дальше →

Ruby на вашем сервере может работать в 2 раза медленее из-за RVM

Время на прочтение2 мин
Охват и читатели17K

Просматривая сегодня «Ruby Inside», наткнулся на статью Justin Kulesza Is Your Application Running with Ruby – Slow?. Статья от 6 ноября, но на Хабре об этой ситуации ни слова. А суть статьи вот в чем: ребята переносили свое приложение с сервера на Solaris на сервер с Ubuntu и использовали RVM для компиляции Ruby. Однако после переноса они заметили, что приложение стало как-будто бы тормознутее. Сначала погрешили на железо, но быстро выяснили, что дело в RVM, а именно в том, что RVM совершенно не использует оптимизацию при компиляции.
Читать дальше →

Class-level instance variables

Время на прочтение3 мин
Охват и читатели18K
В последнее время было много публикаций на эту тему, но у новичков снова и снова возникают вопросы. Публикую свой вариант обьяснения почему не работает как ожидается переменная экземпляра, объявленная в теле класса:

class User
  @var = 1
end

Читать дальше →

Особенности работы с Apple push notification service

Время на прочтение3 мин
Охват и читатели29K
Добрый день, уважаемые хабражители. Совсем недавно я закончил разработку apns-сервиса и хотел бы поделиться некоторыми особенностями работы с ним. Статья не является пошаговой инструкцией, а описывает трудности и подводные камни с которыми может столкнуться разработчик. Примеры кода буду приводить на Ruby, но все написанное актуально и для других платформ, в частности, PHP.
Читать дальше →

Большое обновление ObjectScript 0.99-vm3. Часть 1: Регистровая виртуальная машина

Время на прочтение7 мин
Охват и читатели6.2K
ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua, Ruby и PHP. Вы можете ознакомится с первоначальным синтаксисом языка в этой статье.

ObjectScript 0.99-vm3 — новая быстрая виртуальная машина и новые возможности.

Убраны некоторые операторы, например, clone, numberof и др. заменены функциями. Последнее значение в функции возвращается автоматически. Добавлена короткая запись для доступа к членам объекта — @varname, новый короткий синтаксис для объявления функций и мн. др.
Читать дальше →

Компактная С++ библиотека для программирования конечно-разностных методов в операторном стиле. Часть 1. Семантика

Время на прочтение31 мин
Охват и читатели10K
Представлена семантика разработанной библиотеки pde++ для программирования конечно-разностных методов в операторном стиле. Основными объектами библиотеки являются сеточная функция, сеточная ячейка и сеточные операторы, арифметические соотношения между которыми максимально приближают программный код к его математической нотации. Библиотека pde++ представлена всего несколькими заголовочными файлами, не имеет внешних зависимостей и использует концепцию ленивых вычислений.
Читать дальше

Генерация PDF на сервере в Ruby

Время на прочтение8 мин
Охват и читатели5K
Чуть более месяца назад я устроился верстальщиком в старт-ап, в команду Ruby-разработчиков. Так повезло, что команда оказалась очень хорошей и моё стремление учиться совпало с их желанием получить хорошего специалиста.

HTML-вёрстка сама по себе имеет немного ценности и не единственное, чем можно нагрузить верстальщика.

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

Варианты генераторов для Ruby


Согласно сайту Ruby Toolbox существует два принципиальных подхода к генерации PDF-файлов:


Первый вариант подразумевает генерацию HTML-страницы и конвертацию её в PDF, в то время как второй позволяет, по факту, работать с canvas и генерировать документ без дополнительных прослоек.

Я выбрал вариант с использованием Prawn (по большей части, конечно, по тому, что предыдущая версия PDF-файла генерировалась этим способом) даже не смотря на то, что мне пришлось вынырнуть из привычного мне мира HTML и CSS

Тех, кому интересно приглашаю под хабракат.
Читать дальше →

Использование регулярных выражений в Ruby

Время на прочтение4 мин
Охват и читатели49K
Регулярные выражения — спасение от всех бед для одних и ночной кошмар для других разработчиков, а если говорить объективно, то это мощнейший инструмент, требующий, однако, большой осторожности при применении. Регулярные выражения (регексы, регекспы, регулярки) в языке Ruby основаны на синтаксисе Perl 5 и потому в основных чертах знакомы всем, кто использовал Perl, Python или PHP. Но Ruby тем и хорош, что каждый компонент языка реализован со своим собственным подходом, упрощающим использование данного инструмента и увеличивающим его мощность. В предлагаемой мной небольшой статье рассматриваются особенности регулярок в Ruby и их применение в различных операторах.
Читать дальше →

RailsClub'Moscow 2012. Материалы

Время на прочтение3 мин
Охват и читатели2.5K
Добрый вечер, уважаемые посетители конференций RailsClub.

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

В этот раз нас собралось действительно много. Я рад, что увидел много новых лиц. По моим ощущениям, процентов 80 из пришедших ребят — мне не знакомы. Это значит, что наше сообщество стремительно растет. И я очень рад тому, что railsclub вносит свой вклад в развитие сообщества и способствует данному росту.

Наши мероприятия продолжаются. Впереди нас ждет секция railslub'а на highload'е и конференция RailsClub'Ульяновск.

Друзья, простите, пожалуйста, за некоторые задержки в публикации материалов конференции. Наконец, нам удалось собрать все вместе.

Фотографии:

Конференция — www.facebook.com/media/set/?set=a.282688708508940.59084.115204928590653
AfterParty — www.facebook.com/media/set/?set=a.283311401780004.59279.115204928590653

Видео — railsclub.ru/materials/video_2

Презентации — railsclub.ru/files/presentations/railsclub_moscow_2012.zip

Еще раз благодарим наших спонсоров и всех, кто помогал нам.

Читать дальше →

Ruby-встречи в Санкт-Петербурге снова в моде

Время на прочтение2 мин
Охват и читатели3.4K
В четверг 4 октября в Бизнес Инкубаторе «Ингрия» прошла первая встреча Saint Petersburg Ruby User Group. Хотелось бы провести некую ретроспективу мероприятия, подвести итоги, собрать мнения и рассказать о дальнейших планах.
Читать дальше →

Ближайшие события

Курс по Ruby на Codecademy

Время на прочтение1 мин
Охват и читатели18K
По многочисленным пожеланиям трудящихся учебный портал Codecademy представил курс по языку программирования Ruby.

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

Наиболее интересен курс будет, по-моему, тем, кто начинает изучение Ruby не как очередного языка, а как первого, тем, кто начинает изучать программирования вообще. В частности для тех, кто знаком только с HTML+CSS, но хочет начать разработку приложений на базе фреймворка Ruby on Rails. Понятия «переменная», «объект» и т. п. вводятся по ходу изложения.

Курс на английском, но на простом и понятном даже для меня с моим Soviet English.

Ну и собственно ссылка на курс: www.codecademy.com/ru/tracks/ruby

P.S. НЛО, верни топики-ссылки!

Неканоническое STI в Rails

Время на прочтение4 мин
Охват и читатели9.6K
Перед тем как начать повествование, вспомним что же такое STI.

STI (Single Table Inheritance) — паттерн проектирования, который позволяет перенести объектно-ориентированное наследование на таблицу реляционной базы данных. В таблице БД должно присутствовать поле идентифицирующее название класса в иерархии. Зачастую, в том числе в RoR, поле называют type.

С помощью данного паттерна можно создавать объекты, которые содержат идентичный набор полей, но имеют разное поведение. Например, таблица пользователей, содержащая имя, логин и пароль, но использовалось два класс пользователей Admin, Visitor. Каждый класс, содержит как унаследованны так и индивидуальный набор методов. Определение того, какой класс будет создан и используется поле type, имя поля может быть переопределено.

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

Но может случится иная ситуация…
Читать дальше →

Молниеносный JSON в Ruby on Rails

Время на прочтение2 мин
Охват и читатели24K
Вывод результата в JSON достаточно прост в Rails:

render json: @statuses

Это работает отлично, если нужно вывести небольшое количество записей. Но что случится, если нам потребуется вывести сразу 10'000 записей? Производительность серьезно просядет, а самыми затратными по времени окажутся сериализация JSON и операции с базой данных.

Читать дальше →

vkontakte_api: ruby-адаптер для ВКонтакте API

Время на прочтение7 мин
Охват и читатели28K
В начале этого года мне понадобилось работать с API ВКонтакте из rails-приложения. Увы, я не нашел сколько-нибудь устраивающего меня гема: где-то меня принуждали писать названия методов в camelCase (что в ruby-коде выглядит неестественно), где-то — обязательно проходить авторизацию через библиотеку (при том, что я использовал omniauth) и вообще везде для обращений к API использовался захардкоденный Net::HTTP, блокирующий реактор эвентмашины, на которую я тогда прицеливался. Также в плане документации почему-то все было очень грустно, и приходилось постоянно читать исходники.

Так появился на свет vkontakte_api. Рельсовый проект, послуживший поводом для написания данной библиотеки, уже успел почить — но гем живет и продолжает развиваться, в июле достигнув версии 1.0 (которая послужила поводом для значительных изменений). Используя faraday, библиотека поддерживает вызов любых методов API, загрузку файлов на сервера ВКонтакте и опциональную авторизацию, не принимая за программиста решения, упомянутые в предыдущем абзаце.

Посмотрим, как работать с API с помощью vkontakte_api. В качестве примера сгодится несложное веб-приложение, отображающее на странице ленту новостей (API-метод newsfeed.get), список друзей (friends.get) и групп (groups.get) пользователя, прошедшего OAuth2-авторизацию. А выглядеть это будет примерно так:


Читать дальше →

Terminal Keynote – показываем презентации в терминале

Время на прочтение2 мин
Охват и читатели12K


Terminal Keynote – это, скрипт, созданный Хавьером Нориа (Xavier Noria) для показа своих презентаций на BaRuCo 2012 и RailsClub 2012. Вся его суть в возможности показывать слайды с текстом прямо в терминале.

Читать дальше →

RailsClub'Moscow 2012. Интервью с Сау Шонг Чанг (Sau Sheong Chang)

Время на прочтение5 мин
Охват и читатели2.1K
До очередной конференции RailsClub’Moscow 2012 остается 3 дня. На 11-ый по счету слет российских рубистов приедет самая представительная компания международных Ruby звезд за всю историю конференции.

На наши вопросы уже ответили звездные спикеры Стив Клабник, Ксавье Нориа, ДиркЯн Буссинк и Винн Нидерланд. Теперь пришла очередь представить вам последнего зарубежного гостя нашей конференции, который приедет в Москву из Сингапура!

Интервью публикуются с оригинальными ответами на английском языке и нашим вольным переводом :)

Итак, Сау Шонг Чанг / Sau Sheong Chang — директор прикладных исследований в HP Labs и автор книг “Ruby on Rails Web Mashup Projects” и “Cloning Internet Applications with Ruby”.


Читать дальше →