Обновить
8K+

Ruby *

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

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

Видео с конференции RailsClub'Moscow (30 апреля 2011г.)

Время на прочтение1 мин
Охват и читатели1.3K
1. Галинский Дмитрий «Генерация PDF и ODF»
В лекции идёт речь об инструментах для генерации отчётов, счетов и форм для печати в формате PDF. Лектор рассматривает преимущества и недостатки разных инструментов, приводит примеры их использования.

2. Руденко Андрей «Эффективное %s с ZMQ»
ZMQ — что, как и зачем оно вам надо.

3. Моисеев Сергей «Пакетная обработка в RoR»
Пакетная обработка, на примере Сервиса по массовой обработке большого количества книг. Книги из Pdf в SWF, с поддержкой выделения и копирования из полученных книг текста. Очень часто книги были в виде картинок, вставленных в pdf, только для того чтобы соблюсти последовательность страниц.
Система из программ print2flash (для печати нескольких книг сразу). Всё под win окружением.

4. Бараблин Михаил «Rvm и наши серверы»
Как работать с Ruby, gem и не болеть.

5. Лазурейкис Павел «Интеграция RoR-приложений с социальными сетями»
Виджеты для Вконтакта, использование OmniAuth, Devise+OmniAuth

6. Карпунин Дмитрий «Front-end Rails-приложений»
Front-end Rails-приложений основанный на БЭМ (Блок, Элемент, Модификатор), семантическая вёрстка, IE6, Применение БЭМ на практике, Структура стилей.

Приятного просмотра.
Читать дальше →

История про ExecJS или как выполнять джаваскрипт в руби

Время на прочтение4 мин
Охват и читатели3.9K
Допустим, вы пишите крутой вебдванольный проект на рельсах. У вас есть друг Петя — сильный программист на джаваскрипте. Поскольку Петя пишет много и задорно, он решил облегчить себе жизнь и придумал новый язык с красивым и простым синтаксисом, который будет транслироваться в джаваскрипт.
Еще Петя — большой любитель зеленого чая, поэтому назвал он свой новый язык GreenTeaScript.

Кроме Пети, у вас есть еще один друг-программист-на-джаваскрипте Вася. Вася как-то раз придумал написать программу, которая разбирала бы JS на AST, оптимизовала его, а потом собирала обратно в красивый, структурированный код, отсекая всякое лишнее и форматируя по Кроуфорду. Назвал он свое детище BeautifyJS. Кстати, BeautifyJS еще умел собирать AST в минимизированный сжатый код и делал это быстрее и лучше остальных существующих в природе альтернатив.

Поскольку и Петя и Вася ни на чем, кроме джаваскрипта, программировать не умели, свои продукты они на нем и написали.

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

Теперь начинается самое интересное.
Читать дальше →

RubyGems — подробно

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

Для начала определимся с понятиями:
RubyGems — фрэймворк для установки и запаковки Ruby библиотек и приложений.
gem — пакет(файл) с библиотекой или приложением. Имеет стандартизированный вид и расположен в хранилище в сети.
gem command tool — RubyGems предоставляет утилиту «gem» для работы с gem пакетами из командной строки. Она интегрирована с Ruby и позволяет получать доступ к установленным gem'ам как к библиотекам.

В чем же предназначение RubyGems?

До того как появилась RubyGems, для установки новой библиотеки нужно было найти, скачать её, попытаться установить, часто лишь для того, чтобы убедиться в отсутствии нужных зависимостей. Если же библиотека запакована с помощью RubyGems, достаточно попросить RubyGems сделать это за нас и получить установленную, интегрированную библиотеку со всеми нужными зависимостями. В дополнение ко всему утилита gem — платформонезависима, неважно какую ОС вы используете, везде механизм установки библиотек и приложений будет одинаков. Здорово, правда?

Под катом будут описаны:
1) Поиск, получение деталей, установка gem's
2) Доступ документации по установленному gem
3) Использование установленных gem's
4) Работа с версиями gem's
5) Создание собственных gem's

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

Большие файлы и Sinatra

Время на прочтение2 мин
Охват и читатели2.1K
Недавно столкнулся с интересной проблемой, когда попытка отдать большой файл через Sinatra::Helpers.send_file приводила к отжиранию всей оперативной памяти (типичный размер файла — 14Gb).

Исследование показало, что Sinatra сама читает и отдает файл кусками по 512 байт, но web-сервер thin (а также WEBrick) буферизует вывод в оперативной памяти на своем уровне, что и приводит к таким печальным последствиям.

Для решения проблемы достаточно оказалось перейти на web-сервер Rainbows (web-сервер, базирующийся на коде unicorn, но предназначенный для работы без проксирования, для медленных клиентов и/или сервисов). Но при отдаче больших файлов процесс кушал порядка 30% CPU на одном ядре.

Rainbows позволяет оптимизировать отдачу файлов, используя, к примеру, гем sendfile, который предоставляет соответствующие API операционной системы. Но для этого необходимо, чтобы отдача файла шла через Rack::File API.

В текущей master-ветке Sinatra метод send_file переписали, используя API Rack::File, поэтому мы можем просто бэкпортировать соответствующий функционал в существующие версии гема Sinatra:
Читать дальше →

Используйте бандлер вместо практики rvm gemset per project

Время на прочтение1 мин
Охват и читатели7.7K
Наша команда долгое время использовала известную практику rvm gemset per project. Однако, после работы с пакетным менеджером nodejs мы поняли, что гораздо удобнее складывать зависимости в папку проекта (дефолт для нодовского пакетного менеджера).

Немного покопавшись в документации бандлера я обнаружил, что тоже самое можно сделать и на его основе.
Читать дальше →

Управляем версиями с помощью Bundler

Время на прочтение4 мин
Охват и читатели16K
Недавно вышло обновление rake с версии 0.8.7 до версии 0.9.0, которое наделало много шума в сообществе и в очередной раз выявило проблему управления версиями. Мне бы хотелось прояснить ситуацию и снова проговорить основные моменты, которые я уже упоминал во времена релиза Bundler 1.0. Вначале я расскажу о простых правилах работы, а затем слегка углублюсь в детали.
Читать дальше →

Ускоряем загрузку рельс

Время на прочтение2 мин
Охват и читатели1.8K
Несмотря на заголовок, речь пойдет скорее о руби, чем о рельсах. Поэтому я решил разместить этот перевод в блоге руби.

Последние релизы MRI Ruby показывают значительное замедление при подключении файлов.

Например, наше средненькое рельсовое приложение при загрузке делает require около 2200 раз — это где-то совсем в правой части графика. Совсем никуда не годится. На 1.9.2 приложение стартует за 20 секунд, а на 1.9.3 уже 46. Слишком медленно!
Читать дальше →

Kazan.rb #1 — встреча Ruby & Rails программистов в Казани 21 мая в It-park

Время на прочтение1 мин
Охват и читатели2.2K
Всем привет,

По аналогии с Piter.rb & Kiev.rb мы планируем проводить конференции на тему Ruby & Rails в Казани.
Первую встреча пройдет 21 мая в 12:00 в It-Park на ул. Петербургская, 52, в зале для пресс конференций.

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

Планируемые темы:
  • Cucumber (Leonid Dinershtein)
  • Git flow (Timur Vafin)
  • JS for Rails developers (Timur Vafin)
  • Rails Hardware (Yaroslav Dmitriev)
  • Simple restful application (Vladimir Mikhailov)
  • Mountable apps (Ruslan Gatiyatov)
Читать дальше →

Вышел Spree 0.60.0

Время на прочтение1 мин
Охват и читатели2K
Релиз Spree 0.60.0 официально выпущен. Основной целью этого релиза является упразднение использования resource_controller. Это было долгое путешествие с этой библиотекой, но на данный момент она уже устарела. Особая благодарность Neeraj Singh, Roman Smirnov и Brian Quinn за их напряженную работу по этому вопросу.

Мы приложили существенные усилия, чтобы сохранить большую часть функциональности resource_controller, которая использовалась в коде Spree, реализовав её более подходящим для «Rails Way» способом (с использованием наследования и т.д.). Однако в некоторых случаях, мы не смогли сохранить 100% совместимость с предыдущими версиями Spree. Это может повлиять на некоторые существующие расширения, а также на магазины, которые полагаются на эту функциональность. Кроме того новый подход использует respond_with вместо respond_to. Более подробно всё это описано в руководстве по настройке и в примечаниях к релизу 0.60.0.

Также Вы можете посмотреть на Github полный список изменений, вошедших в релиз 0.60.0.

От переводчика:
Также напоминаю о существовании Synergy — сборки Spree, адаптированной специально для России. На данный момент сборка поддерживает Spree 0.50.2 и 0.60.0. Более подробно я рассказал о ней в статье «Synergy — платформа для создания интернет-магазинов»

[Перевод] VMware CloudFoundry: PaaS на Ruby

Время на прочтение3 мин
Охват и читатели2.4K
image Platform as a Service (PaaS) — это не самая тривиальная вещь для создания, развертывания и поддержки: для начала, приходится проделать немалую работу для управления всеми сервисами изнутри, затем предстоит продумать и реализовать хороший интерфейс, и, в конце-концов, сервис нужно продать и умело его поддерживать. Не удивительно, что инвестиции для создания таких сервисов, могут позволить себе только несколько зажиточных игроков на IT-рынке.

Поэтому было вдвойне интересно наблюдать, как VMware разворачивают сервис CloudFoundry, да еще и с открытым кодом (честно, вот github аккаунт)! Полноценная PaaS, которую они так же предлагают использовать как хостинг, доступна так же каждому, для запуска в собственной компании или датацентре — теперь вы можете запустить «мини Heroku», или «облако EngineYard» на собственных серверах! Но в сторону маркетинг, гораздо интереснее взглянуть под капот этого проекта, ведь он полностью организован на Ruby.

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

Конкурс для разработчиков Rails-ninja

Время на прочтение1 мин
Охват и читатели650
Look At Me это не только популярный сайт о современной культуре, но и крупнейший Ruby on Rails проект в Восточной Европе.
В преддверии конференции Rails Club, которая состоится 30 апреля, Look At Me совместно с сообществом разработчиков RailsClub запускает конкурс Rails-ninja.

Задача конкурса: реализовать механизм генерации JavaScript-валидации HTML-форм, путем отражения декларативной валидации в RubyOnRails методами validates_*_of(*args).

Требования:
  • Приложение должно быть написано с использованием платформы RubyOnRails.
  • Все сторонние компоненты должны быть свободными для коммерческого использования (иными словами — должны быть OpenSource).
  • Репозиторий с исходным кодом проекта должен находится на сервисе github.com.
  • Для демонстрации проект должен быть размещен в сети Интернет участником самостоятельно.
  • Проект должен содержать краткое описание алгоритма реализации.

Работы принимаются до полудня 29 апреля по московскому времени!
Подведение итогов 30 апреля, на конференции RailsClub’Moscow. Побeдитель получит iPad64.

Подробнее о конкурсе.

Ruby на РИТ++

Время на прочтение2 мин
Охват и читатели1.1K
Как вы уже наверняка знаете, 25-26 числа в Москве пройдет главная конференция веб-разработчиков России — РИТ++. На конференции будет освещаться и Ruby, не пропустите перечисленные ниже доклады :-)

Будет доклад, касающийся Ruby, а также мастер-класс, посвященный front-end разработке с использованием Ruby фишек (Haml, Sass, Compass).
Читать дальше →

Ruby Cross Reference

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


Ruby, как известно, просто выглядит, но сложно работает. В особенности это относится к официальному интерпретатору, Ruby MRI: документация на многие детали реализации, например, на байткод или GC, отсутствует даже на японском.

Я попытался упростить исследование кода, открыв сайт Ruby Cross Reference по мотивам LXR. Кроме MRI, проиндекированы еще JRuby и Rubinius.
Читать дальше →

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

Вышел Spree 0.50.0

Время на прочтение1 мин
Охват и читатели1.6K
Intro: Spree — мощный и гибкий движок для создания интернет-магазинов, написанный на Ruby on Rails, распространяющийся под лицензией New BSD.

Рад сообщить хабровчанам о выходе релиза Spree 0.50.0.
В нём нет крупных изменений по сравнению с 0.40.x, вместо этого есть более 50 небольших улучшений и багфиксов.
Рекомендую всем, кто задержался на Spree 0.11.x, переходить именно на Spree 0.50.0

Из значительных изменений можно выделить:
  • Добавление возможности задавать порядок вариантов, опций и изображений в админке
  • Замена SearchLogic на MetaSearch
  • Расширение покрытия интеграционными тестами

Release Notes

Но это ещё не всё…
Читать дальше →

ТАУ-Дарвинизм: реализация на Ruby

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

Предисловие


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

Мультфильм «Пластилиновая ворона».

В этой статье представляю Вашему вниманию реализацию эволюционного подхода к идентификации динамической системы. Программа написана на языке Ruby версии 1.9.2 (gems: NArray, GNUPlot). Заглянув под кат найдете пример вещественного кодирования генной информации и подходящего для него алгоритма скрещивания («flat crossover»).
Как узнать, кто есть кто, читать тут

API ВКонтакте на Ruby

Время на прочтение1 мин
Охват и читатели5.9K
(Пост размещен по просьбе юзера karevn. Все плюсы в карму направляйте ему)

***

На днях в ходе разработки своего проекта возникла нужда в обращении к ВКонтакте API. Ничего подходящего на Ruby не нашёл, поэтому решил написать минималистично-ниндзюцу библиотечку. Библиотечка содержит всего один класс Session, позволяющий обращаться со своими экземплярами как будто это объекты ВКонтакте:

session = ::VK::Session.new app_id, api_secret
friends_hash = session.friends.get :uid => 15003575


Такой вызов вернёт нам распарсенный JSON, содержащий массив из хешей. Если серверу ВКонтакте что-то не понравится, библиотека выкинет исключение.

Вот, собственно, и всё. Пользуйтесь, предлагайте улучшения.

Репозитарий на GitHub.

Обучение программированию на Ruby — занятия продолжаются. Основы ООП

Время на прочтение1 мин
Охват и читатели1.5K
В 12:00 MSK в воскресенье 20 февраля 2011 пройдет очередное занятие по обучению программированию на Ruby для школьников и студентов. Курс рассчитан на начинающих изучать программирование и может рассматриваться как введение в программирование вообще. Сложность изложения и темы в значительной степени определяются аудиторией курса.

Тема занятия — Основы объектно-ориентированного программирования на Ruby.

RubyConf 2010: настоящее и будущее Руби (II)

Время на прочтение4 мин
Охват и читатели1.1K
Я предлагаю вам прочитать перевод третьей части доклада автора Руби, Yukihiro Matsumoto, на RubyConf 2010, опубликованных в его блоге на японском языке, в которой он рассказывает о Rite, минималистичной и модульной реализации Ruby, предназначенной для встраиваемых систем — «умного дома», телевизора или роботов.

Перевод дополнен материалом презентации.

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

RubyConf 2010: настоящее и будущее Руби (I)

Время на прочтение8 мин
Охват и читатели1.2K
Я предлагаю вам прочитать перевод второй части доклада автора Руби, Yukihiro Matsumoto, на RubyConf 2010, опубликованных в его блоге на японском языке. Первая часть представляет из себя краткий исторический обзор предыдущих конференций RubyConf и не представляет интереса к публикации.

За помощь в переводе с японского огромное спасибо Владимиру Садовникову.

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