1

레일 엔진의 파일을 덮어 쓰고 싶지만 그 파일은 해당 엔진의 lib/rails 디렉토리에 있습니다. 동일한 파일을 가져 와서 lib/rails 디렉토리에 놓으면 파일을 덮어 쓰지 않습니다. 레일과 같이 lib 디렉터리를 다르게 응용 프로그램 디렉터리에있는 파일 말을 처리하는 것 같습니다.lib 디렉토리에있는 레일 엔진 파일을 덮어 쓰는 방법은 무엇입니까?

또한이 파일은 파일 이름이 필요한 기존 파일과 동일하므로 이니셜 라이저 폴더 (per this solution)에 넣을 수 없습니다. 이 일을하는 올바른 방법은 무엇입니까?

+0

엔진을 포킹 하시겠습니까? – bento

답변

1

나는이 문제를 해결하기 위해 찾은 가장 좋은 방법은 config/application.rb의 말에

require "#{Rails.root}/lib/path/to/file" 

를 추가하는 것입니다. 오염은 최소화되며 오버라이드와 동일한 효과를냅니다.

현재 Spree 프로젝트에서 이것을 사용하여 lib/spree_samples.rb을 무시합니다.

편집

이 대답에 더 좋은 방법을 찾았 기본적으로 Overloading lib files from gem mounted as engine

, 당신이 당신의 config/initializers 디렉토리에 오버라이드 (override) 할 파일을 넣어.

관련 문제