Решение на Десета задача от Алекс Николов

Обратно към всички решения

Към профила на Алекс Николов

Резултати

  • 1 точка от тестове
  • 2 бонус точки
  • 3 точки общо
  • 0 успешни тест(а)
  • 1 неуспешни тест(а)

Код

REPOSITORY = 'http://github.com/alex-nikolov/ruby-retrospective-2015-2'
# Двадесет неща, които научих.
#
# 1. В пета задача - Хешът се конструира от форматираната дата вместо от
# неформатираната.
#
# 2. В пета задача - Поправка на мястото, откъдето се взима текущия клон в
# ObjectStore#commits_list
#
# 3. В пета задача - Премахване на член-данна @current_branch в ObjectStore,
# тъй като тя съвпада с @current_branch в BranchGroup
#
# 4. В пета задача - Копиране на полетата @commits_list и @to_be_commited в
# Commit в новосъздадения commit вместо предишното споделяне на данни.
#
# 5. В пета задача - В метод ObjectStore#log замяна на итерация с each с
# операция с map и join.
#
# 6. В пета задача - Преместване на класовете Commit и ReturnObject вътре в
# ObjectStore.
#
# 7. В шеста задача - Замразяване на масива Turtle::ORIENTATIONS
#
# 8. В шеста задача - Опростяване на начина на рисуване на ASCII платно.
#
# 9. В шеста задача - Използване на map и join за рисуване на HTML платно
# вместо чрез each и String#<<.
#
# 10. В седма задача - Вместо hardcode-нато извличане на годината, месеца
# и деня в Date#initialize, използване на split и map.
#
# 11. В седма задача - Използване на sprintf за допълване на нулите на
# година, месец и дата.
#
# 12. В седма задача - В Date#match_date? се подсигурява разликата между
# двата сбора дни да е положителна преди да се провери за остатък при
# деление на периода на задачата.
#
# 13. В седма задача - Използване на flat_map за съпоставяне на note с
# периодичност с всички note-ове, чиито събития ще се състоят в
# рамките на една седмица след оригиналния.
#
# 14. В седма задача - Използване на тернарен оператор в Note#body и
# Note#status за по-добра четимост на кода
#
# 15. В седма задача - Използване на size вместо length в Note#body,
# Note#status и Note#scheduled с цел по-добро предаване на смисъла
# на командата.
#
# 16. В седма задача - Премахване на излишно поне @notes от AgendaNote
#
# 17. В седма задача - Смяна на attr_accessor с attr_reader, където няма
# нужда от setter-и (в Date и Note).
#
# 18. В осма задача - Извикване на parse_table само при подаване на
# непразен низ към конструктора.
#
# 19. В осма задача - Научих, че String#split връща масив с един елемент -
# целия низ - когато символът, по който разделяме, не се среща (във
# функция Error#argument_number_error)
#
# 20. В осма задача - Научих, че се казва subtract, а не substract.

Лог от изпълнението

From https://github.com/fmi/ruby-retrospective-2015-2
 * branch            master     -> FETCH_HEAD
HEAD is now at 512294b Modify a test in task 8 to not include empty cells
Cloning into 'submission'...
HEAD is now at a3fbb05 Use split instead of [] in cycle_period_to_days
From /tmp/ruby-retrospective-2015-2/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
http://github.com/alex-nikolov/ruby-retrospective-2015-2/compare/512294b6dde...a3fbb057879

‘solutions/08.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/08.rb’
‘solutions/05.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/05.rb’
‘solutions/07.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/07.rb’
‘solutions/06.rb’ -> ‘/tmp/ruby-retrospective-2015-2/checker/solutions/06.rb’
OK
..............................

Finished in 0.02591 seconds
30 examples, 0 failures
OK
..............

Finished in 0.00947 seconds
14 examples, 0 failures
English words for names
* formated_date on line 16 is not in english

Errors found
F

Failures:

  1) ruby-retrospective-2015-2 covers the minimum requirements
     Failure/Error: system(command) or raise "Command failed for #{@solutions_repo}: #{command}"
     RuntimeError:
       Command failed for http://github.com/alex-nikolov/ruby-retrospective-2015-2: bundle exec rake check
     # /tmp/d20160131-21007-vye4v9/spec.rb:107:in `execute'
     # /tmp/d20160131-21007-vye4v9/spec.rb:82:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-vye4v9/spec.rb:81:in `chdir'
     # /tmp/d20160131-21007-vye4v9/spec.rb:81:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-vye4v9/spec.rb:47:in `chdir'
     # /tmp/d20160131-21007-vye4v9/spec.rb:47:in `block in solutions_pass_all_checks'
     # /tmp/d20160131-21007-vye4v9/spec.rb:46:in `solutions_pass_all_checks'
     # /tmp/d20160131-21007-vye4v9/spec.rb:20:in `ok?'
     # /tmp/d20160131-21007-vye4v9/spec.rb:126:in `<top (required)>'

Finished in 0.00089 seconds
1 example, 1 failure

Failed examples:

rspec /tmp/d20160131-21007-vye4v9/spec.rb:132 # ruby-retrospective-2015-2 covers the minimum requirements

История (1 версия и 1 коментар)

Алекс обнови решението на 27.01.2016 13:32 (преди почти 9 години)

+REPOSITORY = 'http://github.com/alex-nikolov/ruby-retrospective-2015-2'
+
+# Двадесет неща, които научих.
+#
+# 1. В пета задача - Хешът се конструира от форматираната дата вместо от
+# неформатираната.
+#
+# 2. В пета задача - Поправка на мястото, откъдето се взима текущия клон в
+# ObjectStore#commits_list
+#
+# 3. В пета задача - Премахване на член-данна @current_branch в ObjectStore,
+# тъй като тя съвпада с @current_branch в BranchGroup
+#
+# 4. В пета задача - Копиране на полетата @commits_list и @to_be_commited в
+# Commit в новосъздадения commit вместо предишното споделяне на данни.
+#
+# 5. В пета задача - В метод ObjectStore#log замяна на итерация с each с
+# операция с map и join.
+#
+# 6. В пета задача - Преместване на класовете Commit и ReturnObject вътре в
+# ObjectStore.
+#
+# 7. В шеста задача - Замразяване на масива Turtle::ORIENTATIONS
+#
+# 8. В шеста задача - Опростяване на начина на рисуване на ASCII платно.
+#
+# 9. В шеста задача - Използване на map и join за рисуване на HTML платно
+# вместо чрез each и String#<<.
+#
+# 10. В седма задача - Вместо hardcode-нато извличане на годината, месеца
+# и деня в Date#initialize, използване на split и map.
+#
+# 11. В седма задача - Използване на sprintf за допълване на нулите на
+# година, месец и дата.
+#
+# 12. В седма задача - В Date#match_date? се подсигурява разликата между
+# двата сбора дни да е положителна преди да се провери за остатък при
+# деление на периода на задачата.
+#
+# 13. В седма задача - Използване на flat_map за съпоставяне на note с
+# периодичност с всички note-ове, чиито събития ще се състоят в
+# рамките на една седмица след оригиналния.
+#
+# 14. В седма задача - Използване на тернарен оператор в Note#body и
+# Note#status за по-добра четимост на кода
+#
+# 15. В седма задача - Използване на size вместо length в Note#body,
+# Note#status и Note#scheduled с цел по-добро предаване на смисъла
+# на командата.
+#
+# 16. В седма задача - Премахване на излишно поне @notes от AgendaNote
+#
+# 17. В седма задача - Смяна на attr_accessor с attr_reader, където няма
+# нужда от setter-и (в Date и Note).
+#
+# 18. В осма задача - Извикване на parse_table само при подаване на
+# непразен низ към конструктора.
+#
+# 19. В осма задача - Научих, че String#split връща масив с един елемент -
+# целия низ - когато символът, по който разделяме, не се среща (във
+# функция Error#argument_number_error)
+#
+# 20. В осма задача - Научих, че се казва subtract, а не substract.

Здравей :)

Aspell грешката наистина локално я няма, заради малка разлика във версиите на Aspell на сървъра. Обаче, има фейлващ тест, за което по принцип трябва да имаш 0 точки.

Все пак, давам ти бонус точки за труда, който си положил и времето, което си отделил. Харесва ми, че си commit-вал често и логически обособени порции, както и, че имаш многоредови commit съобщения. :)

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::ReturnObject:0x007fc481b4dac8 @message="Commit de8c9461d2222a5d79dff85d5c45abe057c51c1c\nDate: Sun Feb 7 20:45 2016 +0200\n\n\tSo cool!", @success=true, @result=nil> to be success "Commit 064fc1225eaf0767896a8ba5d43bb33c08ac4d61\nDate: Sun Feb 07 20:45 2016 +0200\n\n\tSo cool!"
     # ./specs/05_spec.rb:83:in `block (2 levels) in <top (required)>'

Finished in 0.0126 seconds (files took 0.08907 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