Обновить
16K+

Ruby *

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

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

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

Время на прочтение2 мин
Охват и читатели4.4K
В процессе разработки проекта на 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 мин
Охват и читатели964
Думаю, большинство из пользователей Ruby работали с Rails, и использовали их обработчики событий.

validate :validate_humanity_conflicts

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

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

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

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

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


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

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

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

Время на прочтение1 мин
Охват и читатели1.2K
Некотое время назад, после выхода 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 мин
Охват и читатели2K
Недавно на просторах Launchpad.net был создан тим Ubuntu on Rails.

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

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

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

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

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

плагин StringParser

Время на прочтение1 мин
Охват и читатели696
Решил как-то упорядочить избитую проблему: практически в каждом проекте приходится делать кастомный парсер, который бы выводил текст в удобочитаемом виде. И практически в каждом проекте 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.9K
Статья за авторством хабраюзера preprocessor, который не смог ее опубликовать по всем понятной причине. Так что все плюсики ему:)

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

RailsClubMoscow 20/06/2009

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

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

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

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

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

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

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

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

BDD с помощью Cucumber

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

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

Простой способ получить поля модели в ActiveResource

Время на прочтение1 мин
Охват и читатели793
Если вы пробовали использовать REST, то знаете, что при подключении ресурса через ActiveResource возникает проблема в отсутствие схемы ресурса.
небольшое решение

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

Быстрая разработка GUI приложений на Ruby

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

Вступление


На хабре, по-моему, уже почти все возможные графические API для руби рассматривались. Но почему-то все воспринимают и подают эти самые API исключительно как чистый код. Никаких тебе графических дизайнеров, никакой скоростной разработки GUI — сиди, вычисляй координаты ручками, подгоняй как надо. А зачем иначе, ведь на руби серьезных GUI приложений не написать.
А вот и нет! Если уж на то пошло, то на руби можно написать даже Wolfenstein. Но начинать лучше все-таки с чего-то менее глобального :)

Подготовка


Итак, попробуем написать что-нибудь не очень простое, достаточно GUI'евое и желательно не заморачиваясь на вычисление координат.
Читать дальше →

Мини-конференция по Ruby и Rails — Петербург

Время на прочтение1 мин
Охват и читатели663
Мы планируем очередную мини-конференцию по Ruby и Rails 31 мая в 16.00 в iClub (iclub.su).

Выступления:

— Илья Заяц расскажет об основах использования memcached в Rails.

— Дмитрий Жемеров (Development Lead в JetBrains)
расскажет о Ruby IDE RubyMine

— Роман Чернятчик (Developer в JetBrains)
расскажет о CI и билдсервере TeamCity

Адрес iClub:
Конюшенная Б. ул., 12/10
На ЯКарте

Приходите, будет интересно!

Ruby + Shoes = Миленький GUI

Время на прочтение4 мин
Охват и читатели11K
Статья изначально публиковалась для личного блога, но думаю те кто начинают изучать Ruby, или просто хотят написать GUI к приложению сочтут ее полезной.

Вступлений не будет. Тема сегодня — Shoes. Такой небольшой kit, для создания GUI к приложениям на Ruby. Впервые я о нем них услышал, когда пытался понять, как сделать на руби нечто графическое. Ответ пришел сразу, причем в двух(а то и трех вариантах):

  • Qt
  • wxWidgets
  • Tk
  • Shoes


Посмотрел пункт первый, затем второй. Узнал, что множество из ныне живущих популярных GUI-приложений на C++ имеют под собой Qt-основу :) В общем, вызнал много полезного да и вообще позитивного. На шузы (нравится их так называть) я почти не смотрел, а зря.
Читать дальше →

Vim Ruby Debugger

Время на прочтение3 мин
Охват и читатели6.5K
До недавнего времени я писал Ruby код в Netbeans. Штука клевая и очень удобная, но я давно заглядывался на Vim, уж больно он мощный текстовый редактор, бобам и не снилось. Пытался несколько раз на него перейти, но как только встречался какой-то затык в коде, закрывал Vim, открывал Netbeans, ставил брейкпоинт и начинал разбираться что не так. В общем, привык я к отладчику.

Помучившись некоторое время, пришла идея написать Ruby дебаггер под Vim. Открыл код rails.vim, NERDTree.vim и начал учиться VimScript'у. Так что спасибо tpope и Marty Grenfell за уроки (хотя наверно они никогда этого не прочтут и не узнают об этом). Плагин можно сейчас лицезреть на гитхабе.
Как это установить и как этим пользоваться

Ручная установка Ruby 1.8.7 и Rails на Windows XP

Время на прочтение2 мин
Охват и читатели3.8K
Написал однажды для себя, но подумал — «А что, если кому-то тоже пригодится?»

Итак, установим Ruby. Для этого нужно:

  1. скачать бинарники для Ruby 1.8.7 здесь: http://www.ruby-lang.org/en/downloads/. Распаковать их в желаемую директорию (например в c:\ruby).
  2. открыть My Computer → Properties → Advanced → Enviromental Variables, и дописать в переменную Path такую строку "с:\ruby\bin\" (это зависит от того, куда вы распаковали бинарники)
  3. скачать пакет zlib здесь: http://www.zlib.net/zlib123-dll.zip. Из него достать файл zlib1.dll, переименовать его в zlib.dll и поместить по адресу с:\ruby\bin\
  4. скачать пакет iconv здесь: http://sourceforge.net/project/showfiles.php?group_id=25167&package_id=51458. В архиве отыскать файл iconv.dll и скопировать его по адресу с:\ruby\bin\
  5. скачать и установить библиотеку OpenSSL отсюда: http://www.slproweb.com/products/Win32OpenSSL.html
  6. скачать rubygems здесь: http://rubyforge.org/frs/?group_id=126. Распаковать архив, отыскать файл setup.rb и запустить в консоли команду ruby setup.rb
Теперь необходимо установить Rails. Для этого нужно:
  1. в консоли выполнить команду gem install rails
  2. в консоли выполнить команду gem install sqlite3-ruby -v 1.2.3
  3. скачать и библиотеку SQLite3 здесь: http://www.sqlite.org/download.html. Распаковать из скачанного архива файл sqlite3.dll в папку с:\ruby\bin\
Последние два пунка нужны для того, чтобы запустить Rails-приложение «из коробки», где изначально в конфигурации прописано использование базы данных SQLite.

Теперь необходимо проверить, как работает Rails. Для этого нужно:
  1. в консоли выполнить выполнить команду rails my_projects_name_with_path (например: "rails d:/my_blog") – тем самым мы создадим каркас пустого приложения
  2. перейти в папку с созданным каркасом и выполнить в консоли команду ruby script/server – тем самым мы запустим нашу пустую Rails-программу
  3. в браузере перейти по адресу localhost:3000
  4. на открывшейся странице нажать по ссылке "About your application's environment" – тем самым должно быть показано версии установленых компомент Rails

Спасибо добрым людям, однажды ответившим на вопрос об установке Ruby на сайте stackoverflow.com тем самым сподвигнув меня разобраться во всём в деталях и написать это небольшое руководство-памятку.

Настройка хостинга heroku.com + custom domain name *для новичков

Время на прочтение2 мин
Охват и читатели29K
Итак, подобного материала я нигде не видел, так что считаю необходимым опубликовать данную информацию. image
  • Регистрируемся на Heroku.com письмо с линком приходит быстро, мне пришло уже через 30 секунд.
  • Далее необходимо установить git, я работал в ОС windows (как устанавливать в linux я думаю знают те, кто его используют), вот версия для win, если использовать портативную версию, то необходимо в интерфейсе командной строки, перейти в директорию (куда распаковали) git, и запустить либо оболочку git-bash.bat (лично мне удобнее с ней работать), либо использовать команды только лишь cmd, git-cmd.bat.
  • Далее, необходимо установить gem heroku командой (sudo) gem install heroku у него есть зависимости с другими гемами, вообще они сами установятся автоматически, ну а если нет, то вот ссылки для них: rest-client, launchy, json.
Читать дальше →

Поиск и размещение вакансий для ruby-профессионалов

Время на прочтение1 мин
Охват и читатели1.2K
Сегодня наша команда (hashtrain.com) запустила очередной сервис — RubyJobs.ru.

Здесь компании могут разместить свои вакансии, а руби-профессионалы (и новички ;) найти интересную работу.

Использование сервиса совершенно бесплатно и даже не требует регистрации.

Мы надеемся, что RubyJobs.ru будет полезен всем вам. Приятного рабочего дня!