Background
- 
before(:all)runs the block once before all of the examples.
- 
before(:each)runs the block once before each of your specs.
Summary
- 
around(:suite)does not exist.
- 
around(:all)runs afterbefore(:all)and beforeafter(:all).
- 
around(:each)runs beforebefore(:each)and afterafter(:each).
As this is not 100% obvious (and not yet documented) it is written down in this card. In RSpec 3 :each has the alias :example and :all the alias :context.
Example
RSpec.configure do |config|
  config.before(:suite) { puts 'BEFORE :suite' }
  config.after(:suite) { puts 'AFTER :suite' }
end
describe 'order of hook execution' do
  around(:all) do |each|
    puts 'AROUND BEFORE :all'
    each.run
    puts 'AROUND AFTER :all'
  end
  around(:each) do |each|
    puts 'AROUND BEFORE :each'
    each.run
    puts 'AROUND AFTER :each'
  end
  before(:all) { puts 'BEFORE :all' }
  before(:each) { puts 'BEFORE :each' }
  after(:each) { puts 'AFTER :each' }
  after(:all) { puts 'AFTER :all' }
  it { expect(true).to be(true) }
end
BEFORE :suite
 BEFORE :all
  AROUND BEFORE :all
    AROUND BEFORE :each
      BEFORE :each
        # our example runs here
      AFTER :each
    AROUND AFTER :each
  AROUND AFTER :all
 AFTER :all
AFTER :suite
Further around hook related problems
Posted by Emanuel to makandra dev (2017-08-18 11:02)