Rails의 configeager_load는 Rake 작업에 영향을 미치지 않음
무슨 일이 있었는지
제목과 같이 Rails
config.eager_load
에서 true
로 설정하면 Rake 작업에서 eager loading도 유효하지 않습니다.config/environments/production.rb
config.eager_load = true
연기를 위해 그런 판단을 내리다.보통 레이크 미션에 모든 반이 필요 없다고 생각하니까 그렇지.
대략적으로 확인된 범위 내에서 적어도 4.0에서 현재의 최신 7.0으로 바뀌었다.앞으로도 이런 행동은 계속될 것이다.
무슨 문제 있어요?
이글 로딩 없으면 뭐가 문제예요?
클래스가 불러온 논리에 의존하면 제대로 실행할 수 없고, 다중 루틴 처리가 있으면 오류가 발생합니다.
# 名前空間下の定数全てを取りたいときとか
Foo.constants
해결하다
조금 늦게 시작해도 그다지 큰 애플리케이션인 eager loading을 사용하는 것이 편리하다.
Rails6.1 이후에는 설정
config.rake_eager_load
을 통해 해결할 수 있다.config.rake_eager_load = true
이 글을 읽은 현명한 여러분은 반드시 Rails6.1 이하의 화석을 사용하지 않으실 것입니다. 하지만 저는 먼저 Rails6.1 이하의 좋은 방안을 몇 개 쓰겠습니다.
config.rake_eager_load
Rails.application.eager_load!
config.rake_eager_load
config/application.rb# 以下はRails 6.1未満で `rake_eager_load` を疑似的に再現するための実装
config.rake_eager_load = nil
rake_tasks do
if Rails.gem_version >= Gem::Version.new("6.1.0")
raise "Rails 6.1以降では不要なのでこのコードを削除してください"
end
config.after_initialize do
self.eager_load! if self.config.rake_eager_load
end
end
필요한 환경에서 효율화config/environments/production.rb
config.rake_eager_load = true
총결산
이번에는 네 가지 방법으로 회피했다.
Rails 버전을 업데이트하십시오.
Reference
이 문제에 관하여(Rails의 configeager_load는 Rake 작업에 영향을 미치지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yuji_developer/articles/9409003b23291e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)