Post on 22-Jun-2015
description
Ruby outside Rails
Victor Petrenko Software Engineer & CTO at Songsterr.com
vpetrenko@gmail.com
План
• Автоматизируем свою работу (one-liners)
• Domain Specific Languages. Зачем и как?
• Capistrano. Деплоймент не только Ruby on 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
Demo
Ссылки
• http://benoithamelin.tumblr.com/post/10945200630/text-processing-1liners-ruby-vs-awk
• http://benoithamelin.tumblr.com/ruby1line/
Domain Specific Languages
• DSL — специализированный язык для определенной предметной области
• Примеры DSL: Rake, Capistrano, Rails
• Создание DSL: listo
listo• Большой проект на С++ (30+ подпроектов, 50+ разработчиков)
• Единообразие настроек компилятора
• Кросс-платформенная компиляция (Windows, Unix)
• Интроспекция проекта (проверки, тесты)
class World
class Maker
Success Story• Решал задачи, прожил ~2 года
• Тонкое управление организацией проекта
• Генерация MS Visual Studio projects/solutions
• Генерация qmake файлов (для сборки в unix)
• Автоматическое включение исходников в проект
listo.success?• Мало фич
• Ошибки проектирования/реализации
• Запуск на windows без установки (ruby <= 1.8.6)
• Конкуренция: cmake, qmake
• В итоге был выпилен и заменен на cmake
• Сообщения об ошибках
Ошибки
• Плохая задача для тренировки
• Слишком гибкая семантика
• Проектирование языка listo и интерпретатора одновременно