Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Teaching RSpec to play nice with Rails
Search
Penelope Phippen
April 25, 2017
Technology
2
160
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
Tweet
Share
More Decks by Penelope Phippen
See All by Penelope Phippen
Introducing Rubyfmt
penelope_zone
0
590
How RSpec Works
penelope_zone
0
6.8k
Quick and easy browser testing using RSpec and Rails 5.1
penelope_zone
1
98
Little machines that eat strings
penelope_zone
1
120
What is processor (brighton ruby edition)
penelope_zone
0
130
What is processor?
penelope_zone
1
370
extremely defensive coding - rubyconf edition
penelope_zone
0
280
Agile, etc.
penelope_zone
2
240
Extremely Defensive Coding
penelope_zone
0
120
Other Decks in Technology
See All in Technology
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
220
新規事業における「一部だけどコア」な AI精度改善の優先順位づけ
zerebom
0
450
Kubecon NA 2025: DRA 関連の Recap と社内 GPU 基盤での課題
kevin_namba
0
110
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
280
全員が「作り手」になる。職能の壁を溶かすプロトタイプ開発。
hokuo
1
670
月間数億レコードのアクセスログ基盤を無停止・低コストでAWS移行せよ!アプリケーションエンジニアのSREチャレンジ💪
miyamu
0
670
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
190
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
350
オープンウェイトのLLMリランカーを契約書で評価する / searchtechjp
sansan_randd
3
550
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
120
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
1
110
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
130
GraphQLとの向き合い方2022年版
quramy
50
14k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
The Curse of the Amulet
leimatthew05
1
8k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
250
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Thoughts on Productivity
jonyablonski
74
5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
100
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
160
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