Анджелин обнови решението на 27.01.2016 23:57 (преди почти 9 години)
+REPOSITORY = 'https://github.com/betrakiss/ruby-retrospective-2015-2'
+
+# Още 20 неща, които научих
+# Част 2
+
+# 0. Default поведение пред nil поведение
+
+# 1. Освен да си пиша константи в класовете, е хубаво и да ги правя константи.. (freeze)
+
+# 2. Може да се вкарват променливи в placeholder-ите с хеш
+
+# 3. arity и parameters спестяват дооста код
+
+# 4. Hash-овете могат да сочат към функции!
+
+# 5. Една идея как да подобря регулярните си изрази
+
+# 6. Мога да връзвам методи след end -> end.join(…;)
+
+# 7. Вместо да се вграждат класове, може да се дефинират така: class Outer::Inner
+# 8. Трябва да се внимава с референциите (масив, хеш), едното домашно беше счупено заради един забравен dup
+
+# 9. Правя твърде много променливи, които често са нужни само за един ред
+# 10. Подравняването на приравнявания, например, е много по-четимо, ако са повече
+
+# 11. flat_map комбинира flatten и map .. каква изненада ;d
+
+# 12. attr_reader могат да бъдат изреждани на един ред
+
+# 13. Може да се match-ва регулярен израз и с [regex] (квадратни скоби)
+
+# 14. Как се ползва sprintf
+
+# 15. Chomp връща nil, ако се използва върху празен стринг (а не празен стринг, както си мислех)
+
+# 16. Мисля, че вече имам по-добра представа как да си пакетирам класовете заедно (от ObjectStore проекта)
+
+# 17. Символът \ позволява да си пренасяш стринговете
+
+# 18. Arity връща отрицателна стойност, когато има сплат параметър
+
+# 19. Мога да сплитвам и по регулярен израз!
Здравей!
Използвал си require 'digest\sha1'
(което работи само на Windows) вместо require 'digest/sha1'
(което работи навсякъде), затова има "оплаквания" в лога. За съжаление, дори след корекцията на това, имаш фейлващ тест, което означава 0 точки.
Въпреки това, имаш доста промени и си личи, че си отделил време за задачата, затова ще ти дам точки като бонус.
Иначе, технически погледнато 7. Вместо да се вграждат класове, може да се дефинират така: class Outer::Inner
е правилно, но не е препоръчително. Виж тази тема за обяснение защо.
Лог след промяната на require-а:
OK
........F
Failures:
1) ObjectStore can show log of changes for a single commit
Failure/Error: expect(repo.log).to be_success("Commit #{commit_hash}\nDate: #{Time.now.strftime("%a %b %d %H:%M %Y %z")}\n\n\tSo cool!")
expected #<ObjectStore::Success:0x007fb8fbb5ccf8 @message="Commit 00dfc988c114d37e04c6fff1c03ef0ae0c885686\nDate: Sun Feb 7 21:55 2016 +0200\n\n\tSo cool!", @success=true, @result=nil> to be success "Commit 8fb920f724170b64a3bab2aadf2e054abfd80c40\nDate: Sun Feb 07 21:55 2016 +0200\n\n\tSo cool!"
# ./specs/05_spec.rb:83:in `block (2 levels) in <top (required)>'
Finished in 0.01787 seconds (files took 0.10623 seconds to load)
9 examples, 1 failure
Failed examples:
rspec ./specs/05_spec.rb:77 # ObjectStore can show log of changes for a single commit
Тестовете всъщност минават и затова оставяме пълния брой точки и игнорираме backslash-a.