Как стать автором
Обновить
0.52

Ruby *

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

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

Автозавершение для Rake

Время на прочтение1 мин
Количество просмотров1.6K


Автозавершение в bash’е по Tab’у — это невероятно удобная вещь. И оно точно нужно для rake, которым каждый программист на Ruby пользуется часто.

Особо ленивые программисты уже давно прописали самодельные скрипты в своих .bashrc. Но настоящий дзен-программист не должен любить велосипеды и чтит репозитории и пакеты. Поэтому я собрал скрипт в пакет и выложил в Ubuntu on Rails PPA.

Установка


Ubuntu
  1. Добавляем Ubuntu on Rails PPA:
    $ sudo add-apt-repository ppa:ubuntu-on-rails/ppa
  2. Устанавливаем пакет rake-completion:
    $ sudo apt-get install rake-completion
Другие UNIX
  1. Клонируем репозиторий:
    $ git clone git://github.com/ai/rake-completion.git
  2. Копируем скрипт в системную папку:
    $ sudo cp rake-completion/rake /etc/bash_completion.d/.
Читать дальше →

Ruby-встреча в Петербурге: Инструменты разработки

Время на прочтение1 мин
Количество просмотров668
Очередная встреча ruby-программистов состоится в 20-го ноября
(пятница) в 18:30 в здании учебного центра «Авалон» (он же ФПО СПбГПУ)
по адресу ул. Обручевых, д. 1, аудитория 102, первый этаж,
направо, первая дверь с правой стороны.

В этот раз тема — инструменты разработки.

  • Антон Асташов, автор Vim Ruby Debugger, удаленно из ночного
    Красноярска представит свое детище, а так же расскажет почему и как он
    использует Vim.
  • Федор Кочерга продемонстрирует Emacs, а так же свою версию его
    логотипа.
  • Андрей Ситник расскажет как из Gedit сделать монстра, всего лишь
    установив пакет дополнений Gmate, в разработке которого он участвует.
  • Илья Заяц покажет, чем хорош Textmate для Ruby-разработки


Приходите — устроим аналоговый holy war, а так же пожалуйста,
ggVG"+y"+gP это объявление.

Тинейджер улучшил производительность Ruby

Время на прочтение1 мин
Количество просмотров821
Интересный случай произошел в Японии. Молодой подросток, который участвовал летом в сборе «Security and Programming Camp 2009», под руководством учителя занимался улучшением производительности Ruby 1.9. Достигнутые им успехи можно назвать отличными, а если принять во внимание возраст, то удивительными. Подросток смог ускорить выполнение некоторых методов Ruby 1.9 (которая, напомню, славится своей производительностью относительно версии 1.8) в среднем на 8%. При этом максимальное ускорение составило даже 63%.

По ссылке небольшие подробности того, что сделал тинейджер. Его работа касалась оптимизации циклов и избавлении от ненужных макросов. Патчи паренька были приняты 5 октября этого года в транк Ruby.

via yokolet.blogspot.com/2009/11/japanese-teenage-boy-improved-ruby-19.html

BDD/TDD — Учимся писать матчеры

Время на прочтение3 мин
Количество просмотров4.2K
Разработка, основанная на специфицировании поведения (BDD), — один из краеугольных камней философии Ruby.

Очень удачной реализацией BDD является всем знакомый RSpec. Одной из замечательных черт RSpec является его расширяемость.

Так, мы используем RSpec совместно с Factory Girl (хотя стоило бы перейти на Machinist), RR (прекрасный каркас для заглушек), Spork и недавно перешли с Shoulda на Remarkable.

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

Хорошим способом сделать это является создание нового «ожидателя» (matcher).

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

RubyFlow.ru перешагнул рубеж в 500 читателей

Время на прочтение1 мин
Количество просмотров562
Хочу поделится приятной для нас новостью о том, что проект RubyFlow.ru сегодня перешел рубеж в 500 читателей через RSS. А по случайному совпадению сегодня здесь также была опубликована семисотая статья.

Практически каждый день на RubyFlow.ru публикуются статьи о событиях связанных с Ruby. И любой может стать их автором.

Все материалы доступны как просто на сайте, так и через RSS, а также в твиттер-канале @rubyflowru.

Спасибо всем авторами статей и их читателям! :)

Руби-встреча в Петербург: noSQL

Время на прочтение1 мин
Количество просмотров935
Когда: 15 октября (четверг) 2009 в 18:30.
Где: Учебный центр «Авалон».

Тема этой встречи — noSQL, не реляционные базы данных. Будет два доклада:
Алексей Газиев за еду расскажет про MongoDB.
Роман Снитко — про TokyoCabinet.

Очевидно что выступления займут меньше времени, чем в прошлый раз, поэтому есть предложение собраться после них где-нибудь поблизости от Авалона и просто пообщаться.

Также мы можем выделить немного времени для различного рода
объявлений. Например, если в Питере есть работодатели, которые ищут
Ruby-программистов, то мы с удовольствием предоставим им время
рассказать о своих вакансиях. Либо если есть какие-то проекты, которым
нужна помощь. Просто предупредите заранее и приходите на встречу.

Ruby-новая встреча в Петербурге

Время на прочтение1 мин
Количество просмотров540
Мы предлагаем возобновить ruby-встречи, проводимые в Петербурге.
Приглашаются абсолютно все желающие.

Место:

Встреча состоится 15 сентября (вторник) в 18.30 в здании учебного
центра «Авалон» (он же ФПО СПбГПУ) по адресу ул. Обручевых, д. 1, аудитория 102, первый этаж,
направо, первая дверь с правой стороны.
Читать дальше →

Интеграция с TeamCity

Время на прочтение2 мин
Количество просмотров4.3K
В процессе разработки проекта на Ruby 1.9 нам потребовалось использовать систему непрерывной интеграции.

CruiseControl.rb в своё время не подошёл из-за несовместимости с Ruby 1.9, в результате мы остановились на бесплатной TeamCity Professional под Linux.

Начальная настройка тривиальна, потребует лишь распаковки дистрибутивов TeamCity и JRE, а также настройки переменной JRE_HOME.

Прямо из коробки мы можем получить запуск тестов Test::Unit, RSpec, с оценкой покрытия rcov.

Но нам потребовалось большее, например, использовать кастомные тесты.

Рассмотрим тривиальный пример — тесты на компилируемость (например, исходного кода, файлов в формате YAML etc.).

image

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

VIM как Rails IDE в стиле TexMate благодаря набору скриптов от Akita

Время на прочтение4 мин
Количество просмотров24K
Это мой первый пост на Хабре, прошу не судить строго :)

В далекие времена, когда я ещё писал на c\c++, я пользовался замечательным редактором VIM, знал минимальный набор vim-фишек, и был в целом доволен его работой. Несколько позже я стал изучать Rails и программировать на Ruby. Я достаточно быстро понял, что базовой поставкой VIM не обойтись, попробовал пару найденных в интернете руководств по доведению VIM до уровня полноценной IDE, наткнулся на подводные камни, и быстро сдался. В тот момент мне хотелось изучать в первую очередь именно Rails, а не VIM.
Немного помытарился с разными другими редакторами и IDE типа Aptana, Geany, Eclipse и т.п. пока не наткнулся на полностью, на тот момент, удовлетворящий меня Netbeans. О Netbeans можно писать, да и написано, немало хорошего. Как IDE для разработки на Ruby Netbeans просто прекрасен. Я и сейчас использую его в случае, если работаю в Windows. Но однажды я оказался на длительное время не за своим, а за чужим ноутбуком, на котором уже стоял VIM, в месте, где интернет-трафик был сильно ограничен. А Таксовик требовал срочной доработки. Выкачивать ~60мб Netbeans и ещё n-ное количество мб на плагины было не этично, я и снова начал освоение VIM. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца Akita on Rails и скринкаст в придачу. Он, как я понял, собрал кучу полезных плагинов вместе и чуть-чуть дописал конфиг. Всё, о чём будет говориться ниже верно не только для Ruby, но и для других языков типа C, PHP и прочее, готовые наборы сниппетов (о них далее) в комплекте есть и для них.

Основные фишки этого набора скриптов


  1. FuzzyFinderTexMate — очень удобный поиск файлов в проекте по ctrl+f. К примеру, чтобы найти файл config\routes.rb надо набрать rorb. Или даже и того меньше :)
  2. Набор сниппетов из TexMate и некоторое количество своих (в смысле, NERDSnippets). Очень удобно, набираешь vf + TAB — получаешь validates_format_of :<+attribute+>, :with => /<+regex+>/<+, :on => :<+create+>, :message => "<+is invalid+>"+>, где по TAB скачешь между параметрами, заключёнными в <+...+>. Сниппеты есть для всего, чего угодно, их полный список можно посмотреть в папке snippets в директории с файлами кофигурации VIM.
  3. Дерево проекта, реализованное с помощью NERDTree. Доступно по \+p (обратный слеш и символ p). Переключение с дерева проекта в окно редактирования кода и обратно осуществляется по ctrl+w и стрелка (куда будет стрелка, туда курсор и перескочет), в самом же дереве o — открыть\закрыть папку\файл, R (shift+r) — обновить дерево и по вопросу(?) довольно внятная справка по горячим клавишам.
  4. Подсветка кода (rb, html, rjs, js, erb и т.п.)
  5. Возможности из rails.vim типа перехода по gf на файл модели, если курсор стоит на вызове, например, конструктора. Всяческие :Rake, :Rgenerate и т.п.
  6. Ну и все возможности и навороты VIM, за которые его так любят :)


А вот и скринкаст от автора на эту тему (рекомендую к просмотру):


Перестало работать. Ссылка на другом видеохостинге: blip.tv/file/3765175

Надеюсь, вы уже потираете руки, потому что vim — это очень быстрый, удобный, расширяемый и очень не требовательный к ресурсам компьютера редактор.
Как же всего этого добиться?

Рецепты: Свои наборы обработчиков событий

Время на прочтение1 мин
Количество просмотров911
Думаю, большинство из пользователей Ruby работали с Rails, и использовали их обработчики событий.

validate :validate_humanity_conflicts

validates_presence_of :radius # это не обработчик события, но декларация

Польза от них очевидна:
  • Декларативность описания поведения, когда мы видим особенности классов по декларациям в его начале;
  • Возможность создавать наборы из обработчиков событий, не заморачиваясь на управление ими.
Нам, скорее всего, захочется использовать декларации для удобства описания своих собственных событий.
Читать дальше →

Легковесные веб-приложения на Ruby

Время на прочтение5 мин
Количество просмотров8.8K

Быстрая разработка


Вдохновленный постами на западных блогах вроде «Clone TinyURL with 40 lines of Ruby» или «Clone Pastie in 15 Minutes with Sinatra & DataMapper» я решил попробовать пройти и заодно описать весь процесс реализации легковесного веб-приложения на руби, от проектирования до деплоймента.

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

Производительность IronRuby, Ruby 1.8 и Ruby 1.9

Время на прочтение1 мин
Количество просмотров1.1K
Некотое время назад, после выхода IronRuby сотрудник IBM Антонио Кангиано провел тесты по производительности и получил интересные результаты.
image
Как мы видим из графика, IronRuby уверенно шагает вперед и дает хорошие результаты производительности. Не смотря на результат графиков IronRuby не быстрее Ruby 1.9.1, чего не скажешь при сравнение с веткой 1.8.х

Как бы там не было, быстрее IronRuby или медленнее Ruby 1.9, он дает хорошую альтернативу для программистов, которые разрабатывают и развертывают свои приложения на Windows. Соединив мощности .NET и VS — IronRuby дает интересные возможности, включая выполнения Ruby кода в браузере, благодаря таким проектам как Silverlight/Moonlight и Gestalt.

На данный момент IronRuby нацелен на реализацию функционала Ruby 1.8.x.
Официальный сайта проекта IronRuby
Небольшой обзор IronRuby 0.9 от XaocCPS

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

Вышел IronRuby 0.9

Время на прочтение1 мин
Количество просмотров1.1K
image
Проект IronRuby на всех парах двигается к релизу. На днях было объявлено, что доступна последняя перед релизом версия IronRuby 0.9 с большим набором изменений. Далее будут минорные версии с отладкой и улучшением производительности. Что же нового добавлено в этом выпуске? А добавлено много вкусного:

* добавлена возможность вызывать коды на Python из IronRuby;
* добавлен механизм работы с Win32Ole для работы с COM-объектами и ActiveX;
* добавлена прозрачная работа с генериками .net, так что код написанный на других языках .NET может быть запросто прозрачно вызван в IronRuby;
* явная поддержка x64 через ir64.exe;
* ну и закрыто несколько багов, улучшена производительность и стабильность, все как обычно для предрелизных выпусков.

По поводу IronRuby хочется сказать еще пару слов:

* во-первых проект практически допилен, судя по тестам ironruby.info: 85.14% тестов RubySpec пройдено еще релизом 0.6;
* во-вторых, реализация Ruby на .NET позволяет использовать как имеющийся .net-код с других языков в IronRuby, так и использовать ruby-код в своих проектах написанных, например, на C#;
* в-третьих, IronRuby — это open source проект и работает под Mono, что тоже большой плюс;
* в-четвертых, IronRuby, по оценкам разработчиков, в два раза быстрее MRI, что, конечно, тоже огромный плюс.

Все это — замечательные новости для .net-разработчиков, которые присматриваются к ruby или даже уже используют коды на ruby для своих проектов. Ну и для всех рубистов это тоже отличные новости, потенциал Ruby растет и язык набирает все больше и больше поклонников.

Ubuntu on Rails

Время на прочтение1 мин
Количество просмотров1.9K
Недавно на просторах Launchpad.net был создан тим Ubuntu on Rails.

Миссия тима заключается в поддержании пакетов для инструментария, необходимого в Ruby/Rails разработке. В первую очередь это актуальные версии rubygems (вы все еще инсталите их из исходников?) и passenger.

В тиме участвуют ребята из Brightbox, которые до сих пор поддерживали пакеты passenger, nginx-passenger, ruby-ee для Ubuntu и Debian.

В своем блоге я опубликовал небольшой howto для тех кто хочет помочь.

Под катом инструкции по удалению rubygems установленных из исходников и установке правильных :)

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

плагин StringParser

Время на прочтение1 мин
Количество просмотров636
Решил как-то упорядочить избитую проблему: практически в каждом проекте приходится делать кастомный парсер, который бы выводил текст в удобочитаемом виде. И практически в каждом проекте 80% этого парсера — это решение уже решенных задач.

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

StringParser.new("what a cool url: url.com and image image.com/image.jpg<br/>").urls_to_images.urls_to_links.html_escape.string

То же самое можно оформить в блоке (это кому как больше нравится):

parser = StringParser.new("what a cool url: url.com and image image.com/image.jpg<br/>") do |p|
p.urls_to_images.urls_to_links
p.html_escape
end
parser.string

Я просто приведу названия методов, которые я уже успел закодить, а более подробнее описание можно найти в доках или в исходниках:

break_long_words
close_tags
cut
highlight_code # использует для подсветки gem ultraviolet
html_escape # в отличие от рельсового аналога принимает :except => []
newlines_to_br
urls_to_images
urls_to_links


Хотел бы пригласить всех дополнить либу и довести до ума.

Конечные автоматы в Ruby

Время на прочтение4 мин
Количество просмотров9.5K
Статья за авторством хабраюзера preprocessor, который не смог ее опубликовать по всем понятной причине. Так что все плюсики ему:)

Конечный автомат (Finite-state machine) — это такая штука, описывающая поведение объекта с конечным количеством состояний. Пути перехода из одного состояния в другое, условия этого перехода, действия выполняемые во время перехода или после. С теорией у меня всегда было плохо, поэтому больше вдаваться в нее не буду, вместо этого, для тех кто интересуется подробностями, могу порекомендовать посмотреть википедию (как же без нее) http://en.wikipedia.org/wiki/Finite-state_machine и http://ru.wikipedia.org/wiki/Конечный_автомат, а оттуда уже капать на сколько захочется. На практике это можно использовать много где, от парсинга строк (привет Ragel), до модели User в вашем веб-приложении.
Читать дальше →

RailsClubMoscow 20/06/2009

Время на прочтение2 мин
Количество просмотров645
Рельсовые конференции в Москве входят в традицию. Завидую белой завистью москвичам.

В этот раз организаторы почему-то решили выкладывать видео на YouTube и поэтому все ролики порезали на кусочки по 10 минут.

Я добавил еще одно поле в свой RSS — докладчик. Там я буду указывать имя и хаброник расказчика.

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

New Relic — полный мониторинг вашего RoR приложения

Время на прочтение2 мин
Количество просмотров41K
Перешел тут недавно на новый VDS для своих сайтов на хостинг webbynode.com. Очень все по-рельсовому сделано. Но сейчас речь не о них.

При регистрации предложили сделать аккаунт в приложении мониторинга RoR сайтов. Называются New Relic. Посмотрел презентации, и надо признаться, очень впечатлило. Как промо акция, там дают недельный gold-account, где можно воспользоваться всеми отчетами. Это, друзья мои, стоит внимания.

Дашборд для лайт версии
New Relic RPM - Overview (color_mondays)
Читать дальше →

BDD с помощью Cucumber

Время на прочтение3 мин
Количество просмотров105K
Если вы привыкли сначала писать код, а потом его тестировать, то с BDD такой подход совсем не уместен. Сила BDD в том, что он помогает вести разработку начиная со стадии оформления ТЗ. Для BDD это список свойств (фич), который уместно писать вместе с заказчиком.

Но самое главное, что по этому же списку происходит автоматическое тестирование проекта. Инструмент тестирования (в нашем случае это Cucumber) методично пройдет по вашему перечню и дотошно проверит реализацию каждой фичи.
Читать дальше →

Вклад авторов