Бетина обнови решението на 19.01.2015 16:29 (преди почти 10 години)
+REPOSITORY = 'http://github.com/betinaei/ruby-retrospective-4'
+
+# Двадесет неща, които научих.
+#
+# 1.Научих, че е по-добре да използвам case вместо конструкцията if-
+# elsif-else.
+# 2.String#split с аргументи разделител и числото 2 е удачно да се
+# използва вместо String#partition, когато искаме да пропуснем самия
+# разделител и ако имаме паралелно присвояване.
+# 3.Когато не сме сигурни как да реализираме дадена функционалност,
+# първо да проверим в документацията, за да открием функции, които
+# биха ни помогнали за реализирането.
+# 4.Сase сравнява с === и премахнах използването на class.to_s, защото # в класът Class е имплементиран този оператор.
+# 5.Научих, че когато подаваме блок на функция, можем да извикаме
+# Proc.new в тялото на функцията вместо да подаваме блока като обект
+# чрез &.
+# 6.Научих, че когато include-ваме модул ние всъщност получаваме
+# референция към него и следващи промени в модула се отразяват
+# навсякъде, където е include-нат.
+# 7.Когато дефинираме функция с def и тя не се намира в определен
+# клас, тя отива като private метод на класа Object и, че като цяло
+# не е добра практика да дефинираме такива функции.
+# 8.Рrotected метод може да се извиква от наследниците, но само чрез
+# обект от класа, в който е дефиниран метода.
+# 9.Когато include-нем модул повторно в наследник на даден клас,
+# вторият include се игнорира и при извикване на Module#ancestors
+# вторият не е включен в списъка.
+# 10.Научих, че има разлика между super и super(). Ако методът в
+# родителския клас има задължителни аргументи, извикването на super()
+# ще предизвика грешка, а на super – не.
+# 11.Научих, че в Ruby всичко е израз и връща някаква стойност. Няма
+# нужда да викаме return в повечето случаи, защото оценката на функция
+# е оценката на последния израз в нея.
+# 12.Когато ползваме класова променлива в наследник на даден клас със
+# същото име като на класова променлива в родителя, след промяна на
+# тази променлива в наследника се променя и тази в родителя.
+# 13.Когато предефинираме метода method_missing винаги трябва да
+# дефинираме respond_to_missing?
+# 14.Можем да използваме метод на даден клас като обект чрез функцията
+# method. След това можем да извикаме метода чрез извикване на call на
+# самия обект.
+# 15.Когато искаме да дефинираме повече класови методи е по-добре да
+# се използва class << self.
+# 16.Когато искам да получа списък от променени елементите на друг
+# списък да използвам map вместо each.
+# 17.Да използвам правилно функцията reduce.
+# 18.Можем да дефинираме метод на обект. Този метод отива в singleton
+# класа на обекта.
+# 19.Когато ползваме require, файлът се зарежда само веднъж.
+# 20.Даден gem е просто разархивирана папка с файлове.