title: let! vs let and before in Rspec
body: <p>In Rspec, let uses lazy instantiation so <code>let(:foo) { create(...) }</code> isn't initialised until something calls it. Usually this is good, because it is only used when needed and makes rspec testing times much quicker.</p>
  
  <p>Occasionally however you will have a spec that needs that variable but doesn't explicitly call it. So with lazy instantiation, the spec will fail. </p>
  
  <p>A solution is with a bang! <code>let!(:foo) { create(...) }</code> will force that the variable is initialised. </p>
  
  <p>Some developers seem to be very against this and prefer: </p>
  
  <p><code>let(:foo) { create(...) }
   before do 
     foo
   end
  </code>
  to force the initialisation. </p>
  
  <p>Is there a reason for this? is there any difference between the two methods? </p>