'let' I get, it's only used if called from an example (an example being 'it' or 'scenario' with capybara).
'before' is essentially 'before :each', as per this post, which is essentially let!, as far as I can tell, as both run seperately before every example/it/scenerio.
before :all is used collectively by all examples/its/scenerios
is there some subtle differences I'm missing? I've been reading about this for days
The beauty of open source is that you can just go look at the source...
You're not missing anything subtle, let!
is implemented via a before (each is implied) block calling let
- https://github.com/dchelimsky/rspec/blob/23e01f2e8cb886034b9b6ab0d87a9398284ed7e4/lib/spec/example/example_group_methods.rb#L175