Мое знакомство с Ruby
13 декабря в МВЕУ прошла очередная встреча IzhDevCom, посвященная языку Ruby. Докладчик – Руслан Гатиятов из казанской компании DroidLabs.
1 часть доклада была посвящена языку Ruby. Эта часть мне понравилась больше всего. Ruby предоставляет очень широкие возможности для сокращения количества кода, но вместе с тем и огромное количество способов ”выстрелить себе в ногу”. Вот некоторые особенности языка, показавшиеся мне наиболее любопытными:
Возможность доопределить метод классу:
# Класс кошки. class Cat # Мяукнуть. def Meow() p "Meow-Meow" end end # Создаем новый экземпляр кошки и мяукаем. cat = Cat.new() cat.Meow() # Доопределяем кошке метод "заснуть". class Cat def Sleep() p "Z-z-z-z-z-z" end end # Вызываем метод у экземпляра, созданного до изменения класса. cat.Sleep()
Возможность обработать вызов несуществующего метода:
# Враппер кошки. Конструктор принимает в параметрах кошку. # Враппер пытается делегировать все вызовы внутреннему объекту. class CatWrapper attr_reader :cat def initialize(cat) @cat = cat end # Этот метод будет вызван, если у объекта # попытаются вызвать метод, которого у него нет. def method_missing(method_name, *args) # Если такой метод есть у внутреннего объекта, if @cat.respond_to?(method_name) # Вызываем этот метод у внутреннего объекта. @cat.send(method_name, *args) else super end end end # Создаем враппер и вызываем # метод внутреннего объекта сначала у внутреннего объекта, # потом у самого враппера - результат одинаковый. catWrapper = CatWrapper.new(cat) catWrapper.cat.Meow() catWrapper.Meow()
2 и 3 части доклада были посвящены фреймворку Ruby on Rails и архитектуре веб приложений, создаваемых на его основе. Так как я не веб разработчик, эта часть меня мало заинтересовала. Хотя, конечно, понравилась возможность создавать базовый функционал веб приложения без написания кода.
Мне очень нравятся встречи IzhDevCom, проводимые в этом году. Вместо двух коротких докладов теперь один, но больше и интереснее. Да и количество слушателей потихоньку растет. Надеюсь, в следующем году орги смогут сохранить качество докладов.