Теги ‘ruby’

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

Нет комментариев »

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



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



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



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



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



Ruby / [PODCAST] Ruby NoName Podcast #21

Нет комментариев »

Тви: green_mouse и labria.

RSS и сайт подкаста на RPod.ru


Темы новостей:






В подкасте использованы композиции 8 BIT Junkie by George Wood и Balrog Boogie by Diablo Swing Orchestra


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

Нет комментариев »

Когда: 15 октября (четверг) 2009 в 18:30.

Где: Учебный центр «Авалон».



Тема этой встречи — noSQL, не реляционные базы данных. Будет два доклада:

Алексей Газиев за еду расскажет про MongoDB.

Роман Снитко — про TokyoCabinet.



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



Также мы можем выделить немного времени для различного рода

объявлений. Например, если в Питере есть работодатели, которые ищут

Ruby-программистов, то мы с удовольствием предоставим им время

рассказать о своих вакансиях. Либо если есть какие-то проекты, которым

нужна помощь. Просто предупредите заранее и приходите на встречу.


Ruby / [Перевод] Инструменты метапрограммирования в Ruby

Нет комментариев »


Что такое «метапрограммирование»?



Метапрограммирование — это вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения (самомодифицирующийся код). Первое позволяет получать программы при меньших затратах времени и усилий на кодирование, чем если бы программист писал их вручную целиком, второе позволяет улучшить свойства кода (размер и быстродействие) (из Wikipedia).



В этом учебнике перечисляются все методы ядра Ruby, используемые при метапрограммировании и демонстрирующие обобщенные способы применения, которые будут полезны для вас. В завершение, представлен пример разработки динамического класса, работающего с базой данных, наподобие ActiveRecord, который автоматически генерирует классы для таблиц базы данных и заполняет каждый класс модели get/set-методами для ее полей.


Ruby / [PODCAST] Ruby NoName Podcast #19 (У нас в гостях Дмитрий Штефлюк)

Нет комментариев »

Сегодня у нас в гостях Дмитрий Штефлюк.

Тви: green_mouse,labria и kpumuk.

RSS и сайт подкаста на RPod.ru

Ссылки из интервью:



Темы новостей:






В подкасте использованы композиции 8 BIT Junkie by George Wood и The Street Is Full Of Water by Rekevin (использовано с разрешения авторов).


Ruby / Свой сервер

Нет комментариев »

В капиталистических странах не так давно появилось отличное движение, называемое Rails Bridge. Оно призвано популяризировать Ruby и Ruby on Rails среди подрастающего поколения и привлечь внимание уже состоявшихся разработчиков, которые по тем или иным причинам не пишут на самом красивом языке программирования нашего века (спорить бесполезно, друзья, бесполезно!).



Итак в поддержку этого течения и с надеждой организовать подобное для русскоговорящих коллег (ну и будущих колег конечно :) ) статья (интересующиеся этим — стучитесь ко мне, поговорим):


Внимание! Статья предназначается для новичков и просто любопытствующих.



image


Пишем сервер



Я бы хотел показать насколько просто написать сервер на Ruby. Никакой особой пользы от нашего сервера не будет, но зато сами, руками :)


Итак приступим:


require 'socket'

server = TCPServer.new '127.0.0.1', 3456 # Запускаем наш сервер



Подключаем библиотеку socket и создаем TCP сервер который будет слушать соединения по локальному ip и порту 3456.



Теперь нам нужно организовать цикл в котором мы будем принимать запросы:


while session = server.accept
  # ...
end



Все что мы делаем тут — опрашиваем наше соединение на наличие новых запросов. Если сеть отвечать не будет — сервер тихонько завершит свою работу. Значит что то с сетью не ладное :)



image


Ruby / PODCAST Ruby NoName Podcast #18

Нет комментариев »

18ый выпуск Ruby NoName Podcast



Тви: green_mouse и labria.

RSS и сайт подкаста на RPod.ru


Темы новостей:






В подкасте использованы композиции 8 BIT Junkie by George Wood и Urbaani Erämaa by Huxley Met Soda


Ruby / Ruby And Rails barcamp — Киев, 26 сентября

Нет комментариев »

Не смотря на растущую популярность языка Ruby и веб-фреймворка Rails на западе. Эти, без сомнения, замечательные технологии до сих пор очень плохо освещены в Украине. Именно поэтому инициативной группой coffee’n'code было решено организовать первый в Украине баркемп посвященный Ruby и RoR.



К участию в баркемпе приглашаются как опытные Ruby-программисты так и новички или интересующиеся. Соответственно доклады планируются как на продвинутые темы, так и на более общие.

Ну и естественно мы очень будем рады докладчикам, которым достанутся все внимание и благодарность публики: оптимизировали фреймворк? Придумали ноу-хау? Создали собственный гем или исследовали до дыр чужой? — Расскажите об этом!



Дабы продемонстрировать всю мощь руби, мы так-же планируем проводить Show Time проектов на Ruby созданных участниками кемпа.



В общем, заходите на сайт, регистрируйтесь обсуждайте и общайтесь в Google-группе ну и конечно ждем вас 26сентября лично. (место проведения мы обьявим чуть позже и уведомим всех зарегистрировавшихся посредством электронной почты)


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

Нет комментариев »

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



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



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

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



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



image



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

Нет комментариев »

Это мой первый пост на Хабре, прошу не судить строго :)



В далекие времена, когда я ещё писал на 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+>/<+, :o n => :<+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, за которые его так любят :)





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





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