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
98
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
53
update_columnsについて無知だった話
kitsunecat
0
51
懺悔LT
kitsunecat
0
40
書きながら考えないRSpec
kitsunecat
0
140
ツクリンクで実践している 画像処理
kitsunecat
0
15
ツクリンクで実践している画像処理(フロー部分)
kitsunecat
0
210
Other Decks in Programming
See All in Programming
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
350
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
540
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
610
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
400
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.9k
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.3k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
170
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
What's in a price? How to price your products and services
michaelherold
247
13k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
560
The Spectacular Lies of Maps
axbom
PRO
1
870
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
180
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Embracing the Ebb and Flow
colly
88
5.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Music & Morning Musume
bryan
47
7.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
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より外にメソッド定義するとグローバルになってしまう。 モジュールでぬいぐるむ
ありがとうございました