Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Teaching RSpec to play nice with Rails
Search
Penelope Phippen
April 25, 2017
Technology
190
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Teaching RSpec to play nice with Rails
Presented at Railsconf 2017. Video here:
https://www.youtube.com/watch?v=jyPfrK1y1nc
Penelope Phippen
April 25, 2017
More Decks by Penelope Phippen
See All by Penelope Phippen
Introducing Rubyfmt
penelope_zone
0
630
How RSpec Works
penelope_zone
0
6.9k
Quick and easy browser testing using RSpec and Rails 5.1
penelope_zone
1
120
Little machines that eat strings
penelope_zone
1
140
What is processor (brighton ruby edition)
penelope_zone
0
150
What is processor?
penelope_zone
1
390
extremely defensive coding - rubyconf edition
penelope_zone
0
300
Agile, etc.
penelope_zone
2
270
Extremely Defensive Coding
penelope_zone
0
140
Other Decks in Technology
See All in Technology
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
200
Omarchy Quattro の日本語設定周り
simosako
2
180
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.5k
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
5
2.7k
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
500
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
200
Claude Code本って、 読む必要あるの?
oikon48
2
460
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
150
What the customer really needed
kawaguti
PRO
2
180
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
900
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
Paper Plane
katiecoart
PRO
4
53k
Technical Leadership for Architectural Decision Making
baasie
3
570
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Building the Perfect Custom Keyboard
takai
2
870
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Building AI with AI
inesmontani
PRO
1
1.2k
Transcript
Teaching RSpec to play nice with Rails @samphippen
Friends, it’s good to be back
Last year I had a life threatening illness
None
A precious bag of ceftriaxone, saving my life
None
Thanks @searls
Thanks @searls #samphippenisjustin searlsconfirmed
5.1
Yes*
ActionChatbox::TestCase
ActionDispatch ::BeliefSystemTestCase
Have some faith in us
5.1 has not been released yet
No changes required by you
Released soon in 3.6.0
No system test integration
but I would welcome a PR
RSpec + Rails
RSpec
RSpec isn’t a monolith
gem “rspec”, “~> 3.5”
Does nothing on it’s own
None
None
None
None
Internal shared code
rspec-rails
None
None
RSpec Rails
RSpec Rails our code Your rails version
gem “rspec”, “~> 3.5” gem “rspec-rails”, “~> 3.5”
gem “rspec-rails”, “~> 3.5”
Rails
Rails is a big complicated library
RSpec is extremely permissive about rails versions
>= 3.0
None
None
None
Don’t ask
5
RSpec’s rails 5 compatability was not a smooth ride
Lesson 1: 5.0 means they break things
None
None
None
None
None
Let’s just make sure this works with RSpec
None
View specs don’t work
Specifically path helpers
None
None
Switch back to working version of rails
None
Work out what changed
controller .singleton_class .ancestors
None
None
So we lost 3 random anonymous modules
WTF even are they?
actionpack-5.0.0.beta2/ lib/action_dispatch/ routing/route_set.rb:283
At this point we call in an emergency rails maintainer
None
None
None
This is a huge win for collaboration
Lesson 2: Some bugs are in Rails
None
What the hell is a signed cookie?
None
None
None
None
None
So now the fun begins
git clone rails/rails
Point the app at that rails clone
git bisect bad
git checkout v4.2.0.beta4
git bisect good
None
None
None
and then I left it for a while
and went to Rubyconf
“You have a breaking commit sha? Show me”
None
None
None
“can be replicated purely with Rails using public API”
There exists a twisty turny maze of dependencies
Before filling an issue on a gem, check it’s not
in a dep
Lesson 3: Sometimes you can’t call in @sgrif
None
None
None
None
“I made a short screencast”
None
None
Do the bisect shimmy and shake
None
None
None
None
Explaining a lot of context in a PR message is
super useful
None
Gets merged!
None
It is fine to poke a maintainer to close an
issue once they’ve fixed it
Summary
A lot of bugs that appear in RSpec can be
because of rails
Literally every fix we saw today was in a rails
gem
A Rails reproduction script is a great place to start
None
I will almost always ask you for a reproduction sample
app
Just calling @sgrif is a great way to get rails
bugs fixed
None
Working on open source is really hard
None
This work represented 40+ hours of donated maintainer time
Hug a maintainer
Find some time to work on open source
Pay a maintainer?
None
None
Thanks @samphippen
[email protected]
Let’s have some questions