Custom Wizard 플러그인은 자체 Ember 앱을 생성하고 discourse 코어에서 일부 에셋을 borrows합니다.
이를 위해 개별 파일을 대상으로 하는 sprockets 지시문을 포함하는 wizard-custom.js라는 js 파일을 사용합니다.
일부 경우, 동일한 폴더에서 많은 파일을 require해야 했는데 오랫동안 require_tree를 사용하고 싶었지만, 다음 이유로 인해 불가능했습니다.
wizard-custom.js파일은 플러그인 내부에 위치하므로 discourse와load path가 다르며,load path내부의 파일만 require할 수 있습니다.- Sprockets는
require_tree를 사용할 때 절대 경로를 허용하지 않습니다.
이 문제를 해결하면 discourse 코어의 변경으로 인해 플러그인이 깨지는 경우가 줄어듭니다.
이를 완화하기 위해 discourse 폴더 내부의 에셋을 절대 경로를 사용하여 조회하는 require_tree_discourse라는 사용자 정의 sprockets 지시문을 만들었습니다. 해당 코드가 포함된 PR은 다음과 같습니다.
discourse 개발자 및 일반적인 rails 개발자분들께도 흥미로울 것 같아 공유합니다.