Обновить
8K+

Ruby *

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

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

Что такое travis-ci.org и с чем его едят?

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

Наверняка все слышали шумиху вокруг проекта travis-ci.org. Я не являюсь исключением и учитывая, что один из его разработчиков, Джош Калдеримис (Josh Kalderimis), выступивший на прошедшей конференции toster.ru, разжег мой интерес еще больше, то я решил окончательно разобраться, что такое travis-ci и с чем его едят. После прочтения вы узнаете как данный сервис может помочь ruby-разработчикам, а также как ему могут помочь они. Располагайтесь поудобнее, начнем…
Читать дальше →

Использование связки Sinatra, mongodb и carrierwave, пишем простую фотогалерею

Время на прочтение3 мин
Охват и читатели5.3K
Всем доброго времени суток!

Введение


На написание этого поста меня сподвигло слишком малое количество материала о sinatra, и тем более о данной связке. Надеюсь для кого то этот пост будет полезен. Ниже я опишу как можно совместно использовать sinatra, mongodb и carrierwave, на примере создания простой фотогалереи. Для общения между sinatra и mongodb мы будем использовать отличный gem — mongoid. По умолчанию предполагается что у вас уже установлен ruby и mongodb. Приступим.
Читать дальше →

Забег реализаций ruby '2012

Время на прочтение4 мин
Охват и читатели2.2K
Использовался набор бенчмарков из ruby-1.9.3-p125. Все тесты запускались на:

ОС: OSX Lion 10.7.3
Процессор: 2.3ГГц i5
Память: 8Гб 1333 MHz DDR3
SSD: OCZ Vertex 3 Max IOPS SATA III 2.5" 120Гб

Реализации:
— ruby 1.8.7p249 (системный ruby)
— ruby 1.9.3p125
— ruby 2.0.0dev (2012-02-25 trunk 34796)
— MacRuby 0.12 (ruby 1.9.2) (Nightly build)
— maglev 1.0.0 (ruby 1.8.7)
— rubinius 1.2.4 (1.8.7 release 2011-07-05 JI)
— rubinius 2.0.0dev (1.9.3 e22ed173 JI)
— jruby 1.7.0.dev (ruby-1.9.3-p28) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_04-ea)
— jruby 1.6.7 (ruby-1.8.7-p357) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_04-ea)
Читать дальше →

Создание гемов — Руководство

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

Как же на самом деле надо создавать, развивать и публиковать свои гемы?

Современный подход заключается в использовании Bundler совместно с другими инструментами, такими, как Git, YARD и RSpec-2.
Читать дальше →

Поём вместе с Sinatra. Часть первая. Первое знакомство

Время на прочтение3 мин
Охват и читатели20K
Доброго времени суток!

Что такое Sinatra


Sinatra — маленький, но довольно интересный DSL (Domain-specific language) фреймворк, написанный на Ruby. В отличие от Ruby on Rails он не следует типичному паттерну MVC (Model — View — Controlller). Sinatra создавался для того, чтобы «программист смог быстро создать веб приложение, написанное на Ruby с минимальными усилиями.

Для того, чтобы воспользоваться Sinatra нам неорбходимо его установить. Сделать это можно следующей командой в RubyGems:

gem install sinatra

Также нам понадобится гем под названием Shotgun. Нужен он нам для того, чтобы лишний раз не перезагружать сервер вручную. Shotgun сделает это за нас. Давайте установим его:

gem install shotgun

Ну вот и всё! Всё необходимое для работы у нас есть. Настал момент для творчества. Приступим…
Читать дальше →

Релиз RubyMine 4.0

Время на прочтение1 мин
Охват и читатели2.5K
Сегодня мы рады сообщить о выпуске RubyMine 4.0 — новой версии интегрированной среды разработки для Ruby on Rails от JetBrains. Основной темой релиза стала производительность. Были значительно ускорены функции индексации и анализа кода, и, как следствие, сократилось время отклика приложения при любой работе с ним.

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

Когда нужен RVM, а когда достаточно rbenv

Время на прочтение2 мин
Охват и читатели18K
В данной статье я не буду вдаваться в подробности работы RVM и rbenv. Информации по данным штуковинам хватает на просторах интернета. Здесь же я хочу попытаться раскрыть вопрос: когда стоит использовать rbenv, а когда нет?

Цель


Для этого давайте для начала разберемся для чего же создавался RVM, а для чего rbenv. Для этого достаточно взглянуть на возможности обоих систем.
Читать дальше →

Информационный поток на Google+ о Ruby, Rails, Sinatra

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


I18n.locale = :ru — это новости о Ruby/Rails и связанных технологиях на Google+.

UPDATE: черзе год после вышеописанных событий, мы открыли (в дополнение к G+) и рассылку CodingDead. И вот зачем.
Из описания:
1-3 сообщения в день, безопасная для просмотра в офисе информация, не исползуется для рекламы или спама *.
* Оставляем за собой право на нецензурную брань в комментарих к статьям типа: ‘Why Ruby / Rails / #{your_favorite_gem} sucks‘, a также право на рекламу опенсорс технологий и событий Rails-собщества

Знакомство с Goliath

Время на прочтение8 мин
Охват и читатели6.9K
Продолжаем серию статей, в которой мы знакомим читателей с различными веб фреймворками. И сегодня позвольте представить Goliath (Голиаф, http://postrank-labs.github.com/goliath/) — асинхронный веб фреймворк на Ruby, созданный компанией PostRank (http://postrank.com/), ныне купленной Google.

Главной особенностью Голиафа является применение модели событий для ввода-вывода, посредством библиотеки EventMachine, а также механизма волокон (fibers), появившегося в Ruby 1.9. Его можно считать аналогом столь модного сегодня Node.js, только на Ruby.

В статье мы рассмотрим такие вопросы:
  • волокна и события;
  • установка Goliath;
  • написание простого чата с применением механизма long-polling;
В заключении вы найдете традиционные тесты производительности.

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

Строки до 23 символов в Ruby обрабатываются в 1,92 раза быстрее

Время на прочтение3 мин
Охват и читатели2K
Интересный факт: в Ruby 1.9.3 с 64-битным интерпретатором обработка строк длиной 23 и менее символов происходит почти вдвое быстрее, чем строк длиной 24 и более символов. Другими словами, этот код Ruby:

str = "1234567890123456789012" + "x"

… будет обработан в 1,92 раза быстрее, чем этот:

str = "12345678901234567890123" + "x"

Для 32-битного интерпретатора Ruby граница производительности находится в районе 11/12 символов.

Конечно, довольно глупо изучать свой код и уменьшать все строки до 11 или 23 символов. Разница в производительности проявляется только на сотнях тысяч строк. Однако, желающим покопаться во внутренностях замечательного языка Ruby может быть интересно, почему так происходит.
Читать дальше →

Уроки Ruby для детей

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


Среди преподавателей сложилось мнение, что Ruby — наиболее подходящий язык для изучения программирования. Первый в жизни ЯП должен быть максимально простым в использовании и, разумеется, объектно-ориентированным. В нём не должно быть каких-то двусмысленных концепций или странных особенностей синтаксиса. В общем, Ruby подходит идеально, решили ребята из компании The Hybrid Group и выпустили приложение KidsRuby (код на github) — уроки Ruby для детей.

Несколько скриншотов

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

Сравнение производительности JRuby 1.7 на OpenJDK b147 и YARV 1.9.3p0

Время на прочтение2 мин
Охват и читатели1.6K
После вот этого поста, сообщающего о сногсшибательном увеличении производительности JRuby в версии 1.7 при работе на OpenJDK 7u2 в 3 раза относительно предыдущих релизов.

Припоминая относительную тормознутость и прожорливость JRuby в 2009м, и вот такую статистику от Programming languages shootout, я решил дать JRuby очередной шанс.

Сравнение не претендует ни на точность измерений, ни на всеобъемлемость тестов, а лишь призвано выяснить, догнал ли JRuby YARV по производительности, или нет. На старт, внимание,
...марш!

Ускорение JRuby в три раза после установки JDK 7u2

Время на прочтение1 мин
Охват и читатели1.3K
Команда разработчиков JRuby настоятельно рекомендует всем установить последнюю версию OpenJDK 7u2 (OpenJDK 7 update 2), которая значительно доработана по сравнению с июльским релизом JDK 7 GA (General Availability). Среди прочего, сделана важная оптимизация в подсистеме invokedynamic. Поскольку JRuby 1.7 активно использует эту подсистему, то разработчики специально придерживали выпуск 1.7, дожидаясь этого апдейта. Собственно, официальный релиз 1.7 не произошёл до сих пор, но предварительную сборку для тестирования можно скачать здесь.

При использовании JRuby 1.6.x после апгрейда с Java 6 на Java 7 вы увидите прирост скорости JRuby-приложений примерно на 10-30%, а в случае с JRuby 1.7 — примерно в три раза!

Разработчики просят тех, кто не заметил никакой разницы в производительности, зарегистрировать сообщение в баг-трекере. Очевидно, это какой-то баг, который постараются исправить к официальному релизу JRuby 1.7.

Это ещё не всё. Для будущего OpenJDK 7u4 запланирован новый оптимизатор invokedynamic, и ребята из OpenJDK говорят о возможности ещё большего увеличения производительности.

Знакомство с Gem. Часть вторая

Время на прочтение6 мин
Охват и читатели2.7K
Доброго времени суток!

Вместо введения


Наконец-то я нашёл немного времени для того, чтобы продолжить своё повествование о разнообразных чудесах в Ruby. Как вы помните, в прошлой части мы познакомились с основами написания своего гема. Мы узнали, какой минимальный набор файлов должен быть для того, чтобы его собрать. Также мы узнали как мы можем опубликовать своё творение в RubyGems. В тот же день (после написания первой части) в RubyGems неожиданно проявился всплеск гемов под названием hello-world. Причём я застал довольно много вариаций оного. Некоторые даже не удосужились поменять строку, где указывается автор гема.
g.author = "krovatti"

Некоторые вовсе задавали гему следующие значения версий:
g.version = "666"
g.version = "111"
g.version = "911"

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

Знакомство с Gem. Часть первая

Время на прочтение2 мин
Охват и читатели23K
Доброго времени суток!

Введение


Каждый рубист, да и вообще программист, рано или поздно начинает задумываться о написании своих библиотек. Ему начинает надоедать перетаскивание одних и тех же кусков кода в другие проекты. В Ruby лекарством от данного заболевания являются gem'ы. Итак, давайте познакомимся с ним поближе.
Добро пожаловать к нам под хабракат

Введение в Ruby/Tk. Часть первая

Время на прочтение5 мин
Охват и читатели11K
Доброго времени суток!

Введение


Заглянув сегодня в свой ToDo лист, я понял, что работы на сегодня у меня нет. Сидеть в интернете и читать новости целыми сутками тоже, знаете ли, ещё то удовольствие. Надо было чем-то заняться, а именно написать какое-либо приложение. На следующих выходных я хотел познакомить вас со связкой Ruby + Qt, но поскольку Qt биндинги я пока не установил мне пришлось искать замену. И я её нашёл. Т.к. вместе с Ruby поставляется Tk, то именно на него и пал мой выбор.

Знакомимся с пациентом


Ф.И.О: Давыденко Михаил Юрьевич
Место рождения:

На самом деле, речь пойдет не обо мне, а о Tk.
Tk (от англ. Toolkit — «набор инструментов», «инструментарий») — кроссплатформенная библиотека базовых элементов графического интерфейса, распространяемая с открытыми исходными текстами.

Врач уже здесь


Ruby (от англ. Ruby — «Рубин») — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. В общем и целом то, что нам сейчас нужно.
Читать дальше →

Пишем Anime Wallpaper Downloader на MacRuby

Время на прочтение6 мин
Охват и читатели1.4K
Просматривая theotaku.com в поисках интересных обоев для рабочего стола я поймал себя на мысли о том, что неплохо бы написать софт который по тэгам сам автоматически скачивал бы обои вместо меня. Исходя из того что я пользуюcь Мac OS X как основной операционной системой, софт тоже должен быть для этой платформы и желательно иметь Cocoa интерфейс. Писать всё это на Java почему-то не захотелось. Альтернатив конечно было много, но почему-то захотелось попробовать чего-то другого и заодно научится чем-то новому. Сразу же вспомнил о MacRuby и его тесной интеграции с Cocoa. Вооружившись этой идеей, я сразу же полез на http://www.macruby.org/ и скачал последнюю стабильную версию 0.10. После установки я запустил любимый XCode и создал новый проект с названием AnimeWallpaperDownloader
Читать дальше →