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
how require kill spring
Search
Fumiaki MATSUSHIMA
March 25, 2015
Programming
1
180
how require kill spring
永和システムマネジメント・DeNA 技術交流会発表資料
Fumiaki MATSUSHIMA
March 25, 2015
Tweet
Share
More Decks by Fumiaki MATSUSHIMA
See All by Fumiaki MATSUSHIMA
Learning from performance improvements on GraphQL Ruby
mtsmfm
1
820
Ruby で作る Ruby (物理)
mtsmfm
0
150
GraphQL Ruby benchmark
mtsmfm
1
610
タイムアウトにご用心 / Timeout might break application state
mtsmfm
6
2.2k
Build REST API with GraphQL Ruby
mtsmfm
0
240
GraphQL Ruby をちょっとだけ速くした / Make graphql-ruby faster a bit
mtsmfm
1
580
Gaming PC on GCP
mtsmfm
0
590
How to introduce GraphQL to an existing React-Redux application
mtsmfm
1
170
Canary release in StudySapuri
mtsmfm
0
2.7k
Other Decks in Programming
See All in Programming
Milestoner
bkuhlmann
1
410
SwiftUI Performance 不要なViewの再描画と更新を抑える
bigamitiongit
1
160
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
0
180
見た目から始める生産性向上
ikumatadokoro
7
730
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
350
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
210
Netty Chicago Java User Group 2024-04-17
sullis
0
170
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
210
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
170
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
350
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
110
Featured
See All Featured
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
Web Components: a chance to create the future
zenorocha
305
41k
Music & Morning Musume
bryan
41
5.6k
Raft: Consensus for Rubyists
vanstee
132
6.3k
How GitHub (no longer) Works
holman
304
140k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
A Tale of Four Properties
chriscoyier
150
22k
Product Roadmaps are Hard
iamctodd
43
9.7k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
Building Applications with DynamoDB
mza
88
5.6k
Transcript
(株)永和システムマネジメント @mtsmfm 松島 史秋 springの死について 私が知っている1つの方法
松島 史秋 GitHub, Twitter @mtsmfm
None
ある rails 3.2 案件
spring の死
spring の死 \LoadError/
TL;DR rails 上で requireするな
TL;DR rails 上で requireするな ※ ただし stdlib は除く
$ bundle exec spring rspec
Expected /... /break_spring/app/models /animal.rb to define Animal (LoadError)
None
あるから!
None
None
???
$ bundle exec spring rspec すると何が起きるか
※ spring 1.3.3 ※ rails 3.2 のデフォルト設定の場合 ※ rails 4
~> のデフォルト設定の場合は発 生しません
$ bundle exec spring rspec (1回目)
1. gem とか require 2. app 以下とか load 3. テスト実行
(1回目)
簡易 spring
None
require & load run command
None
$ bundle exec spring rspec (2回目、変更無)
(2回目、変更無) 1. gem とか require 2. app 以下とか load 3.
テスト実行
1. gem とか require 2. app 以下とか load 3. テスト実行
(2回目、変更無)
1. gem とか require 2. app 以下とか load 3. テスト実行
(2回目、変更無) fork 前 fork 後
1. gem とか require 2. app 以下とか load 3. テスト実行
(2回目、変更無) fork 前 fork 後
$ touch app/models/cat. rb
$ bundle exec spring rspec (3回目、変更有)
1. load したのを const_remove 2. テスト実行 3. const_missing で require
(3回目、変更有)
1. load したのを const_remove 2. テスト実行 3. const_missing で require
(3回目、変更有)
require 済
require ‘animal’ # => false
Expected /... /break_spring/app/models /animal.rb to define Animal (LoadError)
※ spring 1.3.3 ※ rails 3.2 のデフォルト設定の場合 ※ rails 4
~> のデフォルト設定の場合は発 生しません
1. gem とか require 2. app 以下とか load 3. テスト実行
4. const_missing で require
1. gem とか require 2. app 以下とか load 3. テスト実行
4. const_missing で require fork 前 fork 後
Rails 3 config.cache_classes = true (eager_load = true を兼ねてる) Rails
4 config.cache_classes = true config.eager_load = false
TL;DR rails 上で requireするな ※ ただし stdlib は除く
stdlib の イケてる require 場所 どこ