Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
とあるプロジェクトでコードを書き始めた僕がつまづいた石たち
Search
zaru
April 05, 2019
Technology
0
130
とあるプロジェクトでコードを書き始めた僕がつまづいた石たち
zaru
April 05, 2019
Tweet
Share
More Decks by zaru
See All by zaru
Next.js App Router セキュリティ
zaru_sakuraba
11
3.2k
Hotwire を 本番環境で使ってみた感想
zaru_sakuraba
7
6.2k
失敗から学ぶ個人開発
zaru_sakuraba
18
5.3k
伝わらない Issue の書き方
zaru_sakuraba
0
640
Ruby との対話 : pry を使い pry をデバッグし pry のバグを直す話
zaru_sakuraba
4
490
もう「クレデンシャルください」なんて言わせない
zaru_sakuraba
5
1.3k
個人プロジェクト現状報告会
zaru_sakuraba
0
88
僕と契約して、メソッドになってよ!
zaru_sakuraba
0
140
Other Decks in Technology
See All in Technology
Reliability Engineering at Studist
katsuhisa91
PRO
0
120
多様なロール経験が導いたエンジニアキャリアのナビゲーション
coconala_engineer
1
160
EthernetベースのGPUクラスタ導入による学びと展望
lycorptech_jp
PRO
0
580
Raspberry Pi 秋の新製品をチェックしてみよう / 20231202-rpi-jam-tokyo
akkiesoft
0
440
.NET のUnified AI Building Blocks 入門...!
okazuki
0
190
PostgreSQL Conference Japan 2024 A4 Comparison of column-oriented access methods
nori_shinoda
0
150
AWS認定試験の長文問題を早く解くコツ
keke1234ke
0
170
職能を超えたモブプログラミングが品質に与えた良い影響
tonionagauzzi
1
170
コーポレートデータマスター構築への道
kworkdev
PRO
0
130
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
0
820
AWS re:Invent 2024登壇資料(GBL206-JA: Unleashing the power of generative AI on AWS for your business)
minorun365
PRO
7
230
GDGoC開発体験談 - Gemini生成AI活用ハッカソン / GASとFirebaseで挑むパン屋のフードロス解決 -
hotekagi
1
740
Featured
See All Featured
How GitHub (no longer) Works
holman
310
140k
RailsConf 2023
tenderlove
29
920
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
1
98
The Invisible Side of Design
smashingmag
298
50k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
480
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
890
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Making the Leap to Tech Lead
cromwellryan
133
9k
What's in a price? How to price your products and services
michaelherold
243
12k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Transcript
とあるプロジェクトで コードを書き始めた僕が つまづいた石たち 2019.04.05 TGIF @zaru
site = Site.find site_id
いたるところにある Site.find id | Site.find name … site.name というのは c1234567890
のような識別子
まさかの find を override していた def find id any_of({_id: id},
{name: id}).first end id もしくは name どちらでもヒットする 気持ちはわかるけど検索キーはどちらかに統一したほうが良い なぜならアプリケーション全体で id と name どちらで持ち回るのか が曖昧になる。ここで透過的に処理するのではなく、もう少し手前 で透過的な処理をしたほうが良い 例外出すと信じてたのに…
site = Site.find site_id
特定ドキュメントの場合、とにかく遅い 大量にある embeds_many が原因 ferret One サービスサイトだと 5MB 以上ある fetch
するのに 200-300msec くらいかかってた Site.without(:hoge) や Site.only(:piyo) でスリムに 20-30msec くらいに改善 embeds_many -> has_many にしたい
Site.without(:hoge).find
mongoid の仕様で一部のフィールドのみを取得した場合は save でき ない set で直接書き換えるしかない… site = Site.without(:hoge).first
site.title = 'update' site.save # NG site.set(title: 'update') # OK これは今後しんどくなりそうな雰囲気を感じている ActiveRecord ってどうだったっけ… ?
response = RestClient.get(query_images)
これ自体はなんてことはない普通のコード rest-client という gem を使っている ただし Gem le には rest-client
は存在しない mailjet というメール配信の gem が rest-client に依存 それを利用している… しかし mailjet はもう使っていないので gem を削除すると死ぬ そして faraday という別の HTTP クライアント gem がありバッティ ングしている
resources :hoge
resources :hoge ← 全部 action あるのかな? 実は使っているのは update だけでした only
except を使った方が良い
# TODO: これは使われているのか… ?
テストコードやリファクタをする際に、メソッドが使われているの か使われていないのかが、すぐ判断できなかった そのメソッドに依存したコードが山のようにあるし URL も露出し ている lograge -> redash があったので実際に
call されているかどうかで判 断 使わなくなったコードはすぐに削除しましょう
TemporaryPage.find(1).site_id
Site has_many Page TemporaryPage extends Page temporary_page.site #=> <Site ....>
temporary_page.site_id #=> nil リレーションしているのだからあるはずでは… ? def site で定義されていた… def site self.public_page.try(:site) end
どんどん良くしていくぞ! という気持ち