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

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

Към профила на Анджелин Неделчев

Резултати

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

Код

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. Мога да сплитвам и по регулярен израз!

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

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 ff55ac1 Fixing indentation.
From /tmp/ruby-retrospective-2015-2/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
https://github.com/betrakiss/ruby-retrospective-2015-2/compare/512294b6dde...ff55ac1c48a

‘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
/tmp/ruby-retrospective-2015-2/checker/solutions/05.rb:1:in `require': cannot load such file -- digest\sha1 (LoadError)
	from /tmp/ruby-retrospective-2015-2/checker/solutions/05.rb:1:in `<top (required)>'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/configuration.rb:1036:in `require'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/configuration.rb:1036:in `block in setup_load_path_and_require'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/configuration.rb:1036:in `each'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/configuration.rb:1036:in `setup_load_path_and_require'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/configuration_options.rb:25:in `configure'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/command_line.rb:17:in `run'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/runner.rb:103:in `run'
	from /data/rails/evans-2015/shared/bundle/ruby/2.2.0/gems/rspec-core-2.99.2/lib/rspec/core/runner.rb:17:in `block in autorun'
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 https://github.com/betrakiss/ruby-retrospective-2015-2: bundle exec rake check
     # /tmp/d20160131-21007-10wcuao/spec.rb:107:in `execute'
     # /tmp/d20160131-21007-10wcuao/spec.rb:82:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-10wcuao/spec.rb:81:in `chdir'
     # /tmp/d20160131-21007-10wcuao/spec.rb:81:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-10wcuao/spec.rb:47:in `chdir'
     # /tmp/d20160131-21007-10wcuao/spec.rb:47:in `block in solutions_pass_all_checks'
     # /tmp/d20160131-21007-10wcuao/spec.rb:46:in `solutions_pass_all_checks'
     # /tmp/d20160131-21007-10wcuao/spec.rb:20:in `ok?'
     # /tmp/d20160131-21007-10wcuao/spec.rb:126:in `<top (required)>'

Finished in 0.00093 seconds
1 example, 1 failure

Failed examples:

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

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

Анджелин обнови решението на 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