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
rake taskでメソッド定義したらテストが不安定になった
Search
Tetsu Nishimura
December 14, 2024
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
rake taskでメソッド定義したらテストが不安定になった
Tetsu Nishimura
December 14, 2024
More Decks by Tetsu Nishimura
See All by Tetsu Nishimura
Railsフロントエンド移行効率化 ためAエージェント利用方法
kitsunecat
0
24
生成AIで仕事をどうにかして怠ける話
kitsunecat
0
55
update_columnsについて無知だった話
kitsunecat
0
54
懺悔LT
kitsunecat
0
44
書きながら考えないRSpec
kitsunecat
0
140
ツクリンクで実践している 画像処理
kitsunecat
0
16
ツクリンクで実践している画像処理(フロー部分)
kitsunecat
0
230
Other Decks in Programming
See All in Programming
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
180
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
590
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
120
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
170
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
140
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
170
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
240
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
230
Building a Meta Ray-Ban display app
akkeylab
0
170
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
260
The Invisible Side of Design
smashingmag
301
52k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Designing for Timeless Needs
cassininazir
1
450
Site-Speed That Sticks
csswizardry
13
1.5k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
420
A better future with KSS
kneath
240
18k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
How STYLIGHT went responsive
nonsquared
100
6.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Transcript
Rake taskでメソッド定義したらテスト が不安定になった
わたくし なまえ:にしむらてつ X:@kamakiriCat S/Wエンジニア歴:6年くらい Ruby, TypeScript, Rust、… 趣味:やまのぼり、いわのぼり 所属:ツクリンク
事例
1. rakeA, rakeBのrspec 「rakeA.spec.rb」, 「rakeB.spec.rb」を作成
2. 複数のspec.rbを指定してrspec実行 rspec rake_a.spec.rb rake_b.spec.rb 3. rake_b.spec.rbの実行結果が、argument errorでfailする →メソッド「hoge」の使い方は道間違えているかわからず混乱。。。 rspecで複数のrakeタスクのテストを実行 task_a.rake メソッド「hoge」を定義したrakeタスク task_b.rake メソッド「hoge」を使用したrakeタスク (でも「hoge」を定義してない) rake_a.spec.rb task_a.rakeを実行するrspec rake_b.spec.rb task_b.rakeを実行するrspec
原因 task_a.rakeのメソッド「hoge」がグローバル定義され、task_b.rakeはそっちにアクセスできてい た。
サンプルタスク こんなrakeタスクを定義しているとする
こまるとき タスク内で定義されたメソッドは、グローバルなスコープで定義されている。(Objectクラスのメ ソッドになる) 同名のメソッド名を持つgemをつかっている場合は、メソッドが上書きされて各所に弊害が出 てしまう。
None
どうすればよかった? 複雑なロジックであれば、サービスクラスにする rakeタスクではそれを実行するだけ 案1:) rakeタスクはトリガー発火するだけにしてしまう
案2:) gem「 maintenance_tasks 」 導入 Kaigi on Rails 2024 やRailsガイドでも紹介されている。
メンテナンス作業を簡潔に管理・実行するためのgem
一時的な回避策 これでもnamespaceより外にメソッド定義するとグローバルになってしまう。 モジュールでぬいぐるむ
ありがとうございました