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
rake taskでメソッド定義したらテストが不安定になった
Search
Tetsu Nishimura
December 14, 2024
Programming
120
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
32
生成AIで仕事をどうにかして怠ける話
kitsunecat
0
64
update_columnsについて無知だった話
kitsunecat
0
63
懺悔LT
kitsunecat
0
47
書きながら考えないRSpec
kitsunecat
0
140
ツクリンクで実践している 画像処理
kitsunecat
0
21
ツクリンクで実践している画像処理(フロー部分)
kitsunecat
0
240
Other Decks in Programming
See All in Programming
sbt 2.0: takeoff
eed3si9n
0
160
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
APNsからLive Activityを開始する話
yumnumm
0
170
Event is what happens
moro
2
790
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.6k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Tell your own story through comics
letsgokoyo
1
1.1k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
Code Reviewing Like a Champion
maltzj
529
40k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Designing for Performance
lara
612
70k
Un-Boring Meetings
codingconduct
0
460
WCS-LA-2024
lcolladotor
0
890
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
330
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より外にメソッド定義するとグローバルになってしまう。 モジュールでぬいぐるむ
ありがとうございました