Ruby Ruby Blocks Working With Blocks Block Method Practice: Custom Classes

John Hill
John Hill
12,781 Points

ruby benchmark

I don't understand why I am getting a syntax error for this code.

simple_benchmarker.rb
class SimpleBenchmarker
  def run(description, &block)
    start_time = Time.now
    block.call
    end_time = Time.now
    elapsed = end_time - start_time

    puts "\n#{description} results"
    puts "Elapsed time: #{elapsed} seconds"
  end
end

benchmarker = SimpleBenchmarker.new
bencharker.run("ut", { puts "hello" })

1 Answer

Steven Ang
Steven Ang
40,656 Points
class SimpleBenchmarker
  def run(description, &block)
    start_time = Time.now
    block.call
    end_time = Time.now
    elapsed = end_time - start_time

    puts "\n#{description} results"
    puts "Elapsed time: #{elapsed} seconds"
  end
end

# Create a new instance of the benchmarker class
benchmarker = SimpleBenchmarker.new
# Run the method "run" on benchmakrer
# Pass the first argument as a string and second argument as a block like this:
benchmarker.run "This is a description" do
  5.times do
    puts "Hello"
  end
end

Useful resource on understanding Ruby Blocks.