No_Knead_Bread.rake

#
# Denali's No-Knead Miracle Bread
#

require 'cast_iron_dutch_oven'  # sudo gem install dutch_oven --version 3.5 Quart --source KitchenwaresStore
require 'mixing_bowl'
require 'spatula'

desc "Step 1. To be performed at night"
task(:at_night) do

  ingredients = { 'Warm Water'        => '2 Cups',
                  'Yeast'             => '1/4 tsp', # Yes, that's all
                  'All Purpose Flour' => '1 Cup',   # King Arthur is the best.
                  'Whole Wheat Flour' => '1/4 Cup' }

  MixingBowl.contents = ingredients.collect {|ingredient, amount| ingredient.measure(amount) }
  MixingBowl.contents.mix_thoroughly(:with => Spatula)
  MixingBowl.cover(:with => :cloth, :loosely => true)
  sleep 4.hours..8.hours
end

desc "Step 2. To be peformed the next morning"
task(:morning => :at_night) do

  ingredients = { 'All Purpose Flour' => "#{(2 + 1/2).scant} Cups",
                  'Asiago Cheese'     => '4 oz',
                  'Salt'              => '2 teaspoons' }

  ingredients['Asiago Cheese'].dice '3/8" cubes'

  MixingBowl.contents << ingredients.collect{ |ingredient, amount| ingredient.measure(amount) }
  MixingBowl.contents.mix_thoroughly(:with => Spatula)
  MixingBowl.cover(:with => :cloth, :loosely => true)
  sleep 6.hours..8.hours
end

desc "Step 3. To be performed after work"
task(:after_work => :morning) do
  Oven::MiddleRack.contents << DutchOven
  Oven::MiddleRack.contents.insert(DutchOvenCover, :next_to => DutchOven)
  Oven::PreHeat.new(500.degrees)

  case Oven::PreHeat.status
  when done?
    sleep 20.minutes  # Let DutchOven heat up after oven is at temperature
  end

  MixingBowl.contents.sprinkle_with :flour

  dutch_oven_cover, dutch_oven = Oven::MiddleRack.contents.pop, Oven::MiddleRack.contents.pop

  dutch_oven.inside.spray_with :oil
  MixingBowl.contents.roll_into(dutch_oven, :with => WetSpatula)

  Oven::MiddleRack.contents << dutch_oven.cover!(dutch_oven_cover)

  Oven::Bake.at(475.degrees, 25.minutes)
  DutchOven.uncover!
  Oven::Bake.at(450.degrees, 12.minutes..16.minutes)

  Oven::MiddleRack.contents.pop

rescue ThirdDegreeBurnError
  Oven.turn_off
  raise EmergencyRoomException, "Wear oven mitts next time"
end