Разработка, основанная на специфицировании поведения (BDD), — один из краеугольных камней философии Ruby.
Очень удачной реализацией BDD является всем знакомый RSpec. Одной из замечательных черт RSpec является его расширяемость.
Так, мы используем RSpec совместно с Factory Girl (хотя стоило бы перейти на Machinist), RR (прекрасный каркас для заглушек), Spork и недавно перешли с Shoulda на Remarkable.
Естественно, захотелось сразу сделать наши спеки более простыми для понимания. Например, мы хотим проверять в спеках наличие определений обратного вызова.
Хорошим способом сделать это является создание нового «ожидателя» (matcher).
Теги ‘ruby’
Тви: green_mouse и labria.
RSS и сайт подкаста на RPod.ru
Темы новостей:
- Ruby EE 1.8.7
- RubyMine 2.0 beta
- R18n
- RMagick ищет нового мэйнтейнера
- RailsCasts: Include vs Join, Cropping images, Finding unused CSS
- RubyPulse
- Ruby screencast aggregator
- RubyConf 5k
- Nike+
- RackSpace + Cassandra
- Github перезжает на RackSpace
- Github останавливает сборку gems
- RailsCasts: Gemcutter && Jeweler
- Все о struct-ах
- FriendlyID
- Coulda
- MonkeySupport
- Formastic for Rails 2.3
- HTML templates into Rails
- Сравнение Unicorn/Passenger/Mongrel
- Обзор книги Programming Cocoa With Ruby
- MacRuby 0.5
- Антонио о компиляции LLVM
- Новая CMS на Rails: Seed
- Защита от XSS — теперь в Rails «из коробки»
- Столы rails-разработчиков
- each_with_index
В подкасте использованы композиции 8 BIT Junkie by George Wood и Balrog Boogie by Diablo Swing Orchestra
Когда: 15 октября (четверг) 2009 в 18:30.
Где: Учебный центр «Авалон».
Тема этой встречи — noSQL, не реляционные базы данных. Будет два доклада:
Алексей Газиев за еду расскажет про MongoDB.
Роман Снитко — про TokyoCabinet.
Очевидно что выступления займут меньше времени, чем в прошлый раз, поэтому есть предложение собраться после них где-нибудь поблизости от Авалона и просто пообщаться.
Также мы можем выделить немного времени для различного рода
объявлений. Например, если в Питере есть работодатели, которые ищут
Ruby-программистов, то мы с удовольствием предоставим им время
рассказать о своих вакансиях. Либо если есть какие-то проекты, которым
нужна помощь. Просто предупредите заранее и приходите на встречу.
Что такое «метапрограммирование»?
Метапрограммирование — это вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения (самомодифицирующийся код). Первое позволяет получать программы при меньших затратах времени и усилий на кодирование, чем если бы программист писал их вручную целиком, второе позволяет улучшить свойства кода (размер и быстродействие) (из Wikipedia).
В этом учебнике перечисляются все методы ядра Ruby, используемые при метапрограммировании и демонстрирующие обобщенные способы применения, которые будут полезны для вас. В завершение, представлен пример разработки динамического класса, работающего с базой данных, наподобие ActiveRecord, который автоматически генерирует классы для таблиц базы данных и заполняет каждый класс модели get/set-методами для ее полей.
Сегодня у нас в гостях Дмитрий Штефлюк.
Тви: green_mouse,labria и kpumuk.
RSS и сайт подкаста на RPod.ru
Ссылки из интервью:
Темы новостей:
- Победители конкурса от GitHub
- GihHub уезжает из EngineYard
- Использование команды tail
- Bullet
- Tequila/Xilence/Handcar
- On rake
- Метапрограммирование в ruby
В подкасте использованы композиции 8 BIT Junkie by George Wood и The Street Is Full Of Water by Rekevin (использовано с разрешения авторов).
В капиталистических странах не так давно появилось отличное движение, называемое Rails Bridge. Оно призвано популяризировать Ruby и Ruby on Rails среди подрастающего поколения и привлечь внимание уже состоявшихся разработчиков, которые по тем или иным причинам не пишут на самом красивом языке программирования нашего века (спорить бесполезно, друзья, бесполезно!).
Итак в поддержку этого течения и с надеждой организовать подобное для русскоговорящих коллег (ну и будущих колег конечно
) статья (интересующиеся этим — стучитесь ко мне, поговорим):
Внимание! Статья предназначается для новичков и просто любопытствующих.

Пишем сервер
Я бы хотел показать насколько просто написать сервер на Ruby. Никакой особой пользы от нашего сервера не будет, но зато сами, руками
Итак приступим:
require 'socket'
server = TCPServer.new '127.0.0.1', 3456 # Запускаем наш сервер
Подключаем библиотеку socket и создаем TCP сервер который будет слушать соединения по локальному ip и порту 3456.
Теперь нам нужно организовать цикл в котором мы будем принимать запросы:
while session = server.accept # ... end
Все что мы делаем тут — опрашиваем наше соединение на наличие новых запросов. Если сеть отвечать не будет — сервер тихонько завершит свою работу. Значит что то с сетью не ладное

18ый выпуск Ruby NoName Podcast
Тви: green_mouse и labria.
RSS и сайт подкаста на RPod.ru
Темы новостей:
- _why ушел
- 32 ссылки на тему ухода _why
- RoR 2.3.4
- XSS в Rails
- Passenger 2.2.5
- Cassandra и Ruby
- CassandraObject — маппер для Cassandra
- Devver
- Как сделать из Rails3 sinatra
- Простой и удобный профайлер для Rails приложений от Дмитрия Штефлюка
- Pedant
- Ruby version manager
- 5 советов по индексированию Sphinx
- Тестирование Flex через FunFX и Cucumber
- Красавец-мужчина рекомендует к прочтению
- Hijack
- 15 советов экспертов по использованию огурца
- 5 советов по деплойменту фоновых задач
В подкасте использованы композиции 8 BIT Junkie by George Wood и Urbaani Erämaa by Huxley Met Soda
Не смотря на растущую популярность языка Ruby и веб-фреймворка Rails на западе. Эти, без сомнения, замечательные технологии до сих пор очень плохо освещены в Украине. Именно поэтому инициативной группой coffee’n'code было решено организовать первый в Украине баркемп посвященный Ruby и RoR.
К участию в баркемпе приглашаются как опытные Ruby-программисты так и новички или интересующиеся. Соответственно доклады планируются как на продвинутые темы, так и на более общие.
Ну и естественно мы очень будем рады докладчикам, которым достанутся все внимание и благодарность публики: оптимизировали фреймворк? Придумали ноу-хау? Создали собственный гем или исследовали до дыр чужой? — Расскажите об этом!
Дабы продемонстрировать всю мощь руби, мы так-же планируем проводить Show Time проектов на Ruby созданных участниками кемпа.
В общем, заходите на сайт, регистрируйтесь обсуждайте и общайтесь в Google-группе ну и конечно ждем вас 26сентября лично. (место проведения мы обьявим чуть позже и уведомим всех зарегистрировавшихся посредством электронной почты)
В процессе разработки проекта на Ruby 1.9 нам потребовалось использовать систему непрерывной интеграции.
CruiseControl.rb в своё время не подошёл из-за несовместимости с Ruby 1.9, в результате мы остановились на бесплатной TeamCity Professional под Linux.
Начальная настройка тривиальна, потребует лишь распаковки дистрибутивов TeamCity и JRE, а также настройки переменной JRE_HOME.
Но нам потребовалось, большее, например, использовать кастомные тесты.
Рассмотрим тривиальный пример — тесты на компилируемость (например, исходного кода, файлов в формате YAML etc.).

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