Решение на Десета задача от Димитър Узунов

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

Към профила на Димитър Узунов

Резултати

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

Код

REPOSITORY = 'http://github.com/dimitaruzunov/ruby-retrospective-2015-2'
# Двадесет неща, които научих.
#
# Шеста задача
# 1. Конструиране на масив чрез следната конструкция:
# [0] * 3
# което връща [0, 0, 0]
# 2. Не е добра практика да се дефинират класове по следния начин:
# class TurtleGraphics::Turtle
# Защото така в тялото на класа търсенето на константи се променя и няма да
# бъде търсено в TurtleGraphics.
# 3. Използване на freeze метода за обекти, които няма и не трябва
# да се променят, е добра практика.
# 4. Използване на метода % за вкарване на число в даден интервал спестява
# доста if-ове. Например, @x %= @columns вместо
# if @x >= @columns then 0 elsif @x < 0 then @columns - 1 else @x end
# 5. Научих за темплейти от вида <<-TEMPLATE ... TEMPLATE, в които може да има
# placeholder-и от вида %{pixel_size}, които след това да бъдат заместени
# със стойности, използвайки метода %:
# TEMPLATE % { pixel_size: @pixel_size }
# 6. Не е добра практика да се създават 'builder' методи като
# def closing_tags "</body></html>" end
# които връщат винаги един и същ низ.
# Това може да се избегне, използвайки темплейти
# 7. Форматиране на низове чрез %:
# '<td style="opacity: %.2f"></td>' % (steps / maximum_steps)

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

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 2d7f61a Refactor HTML class. Not using builder methods such as opening_tags and closing_tags. Instead use <<-TEMPLATE and interpolating with % method and string formatting
From /tmp/ruby-retrospective-2015-2/checker
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> upstream/master

Changes URL:
http://github.com/dimitaruzunov/ruby-retrospective-2015-2/compare/512294b6dde...2d7f61a8b71

‘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.02579 seconds
30 examples, 0 failures
OK
..............

Finished in 0.0096 seconds
14 examples, 0 failures
OK
..............F

Failures:

  1) LazyMode#daily_agenda returns note scheduled with weekly repeater
     Failure/Error: scheduled '2012-12-5 +1w'
     NoMethodError:
       undefined method `[]' for nil:NilClass
     # ./solutions/07.rb:118:in `initialize'
     # ./solutions/07.rb:39:in `new'
     # ./solutions/07.rb:39:in `scheduled'
     # ./specs/07_spec.rb:166:in `block (5 levels) in <top (required)>'
     # ./solutions/07.rb:92:in `instance_eval'
     # ./solutions/07.rb:92:in `note'
     # ./specs/07_spec.rb:165:in `block (4 levels) in <top (required)>'
     # ./solutions/07.rb:7:in `instance_eval'
     # ./solutions/07.rb:7:in `create_file'
     # ./specs/07_spec.rb:164:in `block (3 levels) in <top (required)>'

Finished in 0.00536 seconds
15 examples, 1 failure

Failed examples:

rspec ./specs/07_spec.rb:163 # LazyMode#daily_agenda returns note scheduled with weekly repeater
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/dimitaruzunov/ruby-retrospective-2015-2: bundle exec rake check
     # /tmp/d20160131-21007-g0xo2m/spec.rb:107:in `execute'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:82:in `block (3 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:81:in `chdir'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:81:in `block (2 levels) in solutions_pass_all_checks'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:47:in `chdir'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:47:in `block in solutions_pass_all_checks'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:46:in `solutions_pass_all_checks'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:20:in `ok?'
     # /tmp/d20160131-21007-g0xo2m/spec.rb:126:in `<top (required)>'

Finished in 0.00099 seconds
1 example, 1 failure

Failed examples:

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

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

Димитър обнови решението на 27.01.2016 22:05 (преди почти 9 години)

+REPOSITORY = 'http://github.com/dimitaruzunov/ruby-retrospective-2015-2'
+
+# Двадесет неща, които научих.
+#
+# Шеста задача
+# 1. Конструиране на масив чрез следната конструкция:
+# [0] * 3
+# което връща [0, 0, 0]
+# 2. Не е добра практика да се дефинират класове по следния начин:
+# class TurtleGraphics::Turtle
+# Защото така в тялото на класа търсенето на константи се променя и няма да
+# бъде търсено в TurtleGraphics.
+# 3. Използване на freeze метода за обекти, които няма и не трябва
+# да се променят, е добра практика.
+# 4. Използване на метода % за вкарване на число в даден интервал спестява
+# доста if-ове. Например, @x %= @columns вместо
+# if @x >= @columns then 0 elsif @x < 0 then @columns - 1 else @x end
+# 5. Научих за темплейти от вида <<-TEMPLATE ... TEMPLATE, в които може да има
+# placeholder-и от вида %{pixel_size}, които след това да бъдат заместени
+# със стойности, използвайки метода %:
+# TEMPLATE % { pixel_size: @pixel_size }
+# 6. Не е добра практика да се създават 'builder' методи като
+# def closing_tags "</body></html>" end
+# които връщат винаги един и същ низ.
+# Това може да се избегне, използвайки темплейти
+# 7. Форматиране на низове чрез %:
+# '<td style="opacity: %.2f"></td>' % (steps / maximum_steps)