Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Railsのコードを読んでみる vol.1
Sho Nagata
July 31, 2019
Programming
0
210
Railsのコードを読んでみる vol.1
Sho Nagata
July 31, 2019
Tweet
Share
More Decks by Sho Nagata
See All by Sho Nagata
競技プログラミングにチャレンジ!
nagata03
0
190
1年間Rubyを使って印象的だったあれこれ
nagata03
0
270
コードを見る!書く!見てもらう!で爆速ステップアップ!!
nagata03
1
2k
プログラミング歴半年のRubyistがGoを学び始めて戸惑った点
nagata03
1
480
method_missingの黒魔術っぷりについて
nagata03
0
170
Other Decks in Programming
See All in Programming
機能横断型チームにおける技術改善
takeshiakutsu
3
440
Kotlin 最新動向2022 #tfcon #techfeed
ntaro
1
970
Yumemi.apk #6 ~ゆめみのAndroidエンジニア 日頃の成果大発表会!~ Session 2
blendthink
1
210
A technique to implement DSL in Ruby
okuramasafumi
0
640
From Java 11 to 17 and beyond
josepaumard
0
290
バンドル最適化マニアクス at tfconf
mizchi
3
2.1k
Where and how to run UI tests (Droidcon Lisbon & Android Makers, Paris)
nonews
0
120
ebpfとWASMに思いを馳せる2022 / techfeed-conference-2022-ebpf-wasm-amsy810
masayaaoyama
0
580
Microsoft Teams の 会議アプリ開発のはじめかた / How to start Microsoft Teams app development
karamem0
0
1.5k
Blazor WebAssembly – Dynamische Formulare und Inhalte in Aktion
patrickjahr
0
150
既存のプロジェクトにKMMを導入するための対応策
martysuzuki
2
300
Securing Kafka Connect Pipelines with Client-Side Field Level Cryptography @ Kafka Summit London 2022
hpgrahsl
0
310
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
268
11k
Practical Orchestrator
shlominoach
178
8.6k
Making Projects Easy
brettharned
98
4.3k
Designing for humans not robots
tammielis
241
23k
What’s in a name? Adding method to the madness
productmarketing
11
1.5k
4 Signs Your Business is Dying
shpigford
169
20k
Web development in the modern age
philhawksworth
197
9.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
4
2k
The Pragmatic Product Professional
lauravandoore
19
2.9k
Happy Clients
brianwarren
89
5.5k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
Building Your Own Lightsaber
phodgson
94
4.6k
Transcript
Railsのコードリーディング vol.1 2019.7.31 (Wed) Ebisu.rb#24 twitter: @s_naga03
Who am I? • Sho Nagata • Backend Engineer@カカクコム •
食べログのマイクロサービス化を推進中 • Ruby / Rails(歴は10ヶ月) ˏs_naga03 Sho Nagata nagata03
Railsのコード読んだことありますか?
今回チャレンジしたのは…
ActiveRecordの「バリデーション機能」
実はまだ読みきれていない…
今日は、Railsのコードを読んでみてわかったことや発見したことを お伝えします
Validation • オブジェクトをDBに保存する前にオブジェクトの状態を検証
Validation • 検証内容の定義例
Validation • 検証のトリガ • create, create!, save, save!, update, update!
• valid?, invalid?(DBに保存せず検証だけしたい時) → valid?メソッドから追ってみる
active_record/varidations.rb active_model/varidations.rb
active_model/varidations.rb active_support/callbacks.rb ʁ To Be Continued…
今回、Railsのコードリーディングを通してわかったことや発見したこと
その1:黒魔術は避けられない
その2:superよく使われる
その3:GitHubのコードジャンプ便利
その4:Methodクラスのメソッド便利
Method#source_location
Method#super_method
その5:初級レベルの人間が1人で読み解くのはキツい
まとめ • Railsのコードリーディング、ナメてかかると痛い目にあった • 業務で見るコードとは一味違うので、面白くもあり苦しくもある • コードを読み解く力は確実につく
今後 • バリデーション機能の実装を読み解く! • 仲間を集めて一緒に挑みたい • OSSにコミットしたい
Thank you!!