15
Ruby outside Rails Victor Petrenko Software Engineer & CTO at Songsterr.com [email protected]

Ruby outside Rails

Embed Size (px)

DESCRIPTION

Ruby one-liners & DSL

Citation preview

Page 1: Ruby outside Rails

Ruby outside Rails

Victor Petrenko Software Engineer & CTO at Songsterr.com

[email protected]

Page 2: Ruby outside Rails

План

• Автоматизируем свою работу (one-liners)

• Domain Specific Languages. Зачем и как?

• Capistrano. Деплоймент не только Ruby on Rails

Page 3: Ruby outside Rails

southfest.ru

Page 4: Ruby outside Rails

Задача2,Wonderwall,Intermediate!

4,Tears In Heaven,Beginner!

5,Paint It Black,Intermediate!

8,Iron Man,Advanced!

10,Johnny B. Goode,Intermediate!

12,Can't Stop,Intermediate!

14,Come As You Are,Intermediate!

19,Enter Sandman,Intermediate

Page 5: Ruby outside Rails

Demo

Page 6: Ruby outside Rails

Ссылки

• http://benoithamelin.tumblr.com/post/10945200630/text-processing-1liners-ruby-vs-awk

• http://benoithamelin.tumblr.com/ruby1line/

Page 7: Ruby outside Rails

Domain Specific Languages

• DSL — специализированный язык для определенной предметной области

• Примеры DSL: Rake, Capistrano, Rails

• Создание DSL: listo

Page 8: Ruby outside Rails

listo• Большой проект на С++ (30+ подпроектов, 50+ разработчиков)

• Единообразие настроек компилятора

• Кросс-платформенная компиляция (Windows, Unix)

• Интроспекция проекта (проверки, тесты)

Page 9: Ruby outside Rails
Page 10: Ruby outside Rails

class World

Page 11: Ruby outside Rails

class Maker

Page 12: Ruby outside Rails

Success Story• Решал задачи, прожил ~2 года

• Тонкое управление организацией проекта

• Генерация MS Visual Studio projects/solutions

• Генерация qmake файлов (для сборки в unix)

• Автоматическое включение исходников в проект

Page 13: Ruby outside Rails

listo.success?• Мало фич

• Ошибки проектирования/реализации

• Запуск на windows без установки (ruby <= 1.8.6)

• Конкуренция: cmake, qmake

• В итоге был выпилен и заменен на cmake

• Сообщения об ошибках

Page 14: Ruby outside Rails

Ошибки

• Плохая задача для тренировки

• Слишком гибкая семантика

• Проектирование языка listo и интерпретатора одновременно

Page 15: Ruby outside Rails

Спасибо за внимание!

Вопросы?

Виктор Петренко [email protected]