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
29
生成AIで仕事をどうにかして怠ける話
kitsunecat
0
60
update_columnsについて無知だった話
kitsunecat
0
58
懺悔LT
kitsunecat
0
47
書きながら考えないRSpec
kitsunecat
0
140
ツクリンクで実践している 画像処理
kitsunecat
0
20
ツクリンクで実践している画像処理(フロー部分)
kitsunecat
0
240
Other Decks in Programming
See All in Programming
Family mrubyの進捗
kishima
1
130
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
120
App Intentsのビルドプロセスを支える技術
kntkymt
0
390
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
130
Security issues being discussed on Web Platforms
petamoriken
0
960
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
250
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
430
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
490
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
730
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
Webの地図
yosuke_furukawa
PRO
6
4.6k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.5k
Featured
See All Featured
Accessibility Awareness
sabderemane
1
210
Mobile First: as difficult as doing things right
swwweet
225
10k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
4 Signs Your Business is Dying
shpigford
187
23k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
RailsConf 2023
tenderlove
30
1.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
990
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より外にメソッド定義するとグローバルになってしまう。 モジュールでぬいぐるむ
ありがとうございました