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.2秒で何が起きているのか
supurazako
2
150
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
140
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
350
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
690
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
5分で問診!Composer セキュリティ健康診断
codmoninc
0
560
共通化で考えるべきは、実装より公開する型だった
codeegg
0
270
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
100
What's New in Android 2026
veronikapj
0
130
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
410
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
WENDY [Excerpt]
tessaabrams
11
38k
Building an army of robots
kneath
306
46k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Crafting Experiences
bethany
1
230
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
The Spectacular Lies of Maps
axbom
PRO
1
870
Bash Introduction
62gerente
615
220k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
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より外にメソッド定義するとグローバルになってしまう。 モジュールでぬいぐるむ
ありがとうございました