Custom Wizard 플러그인을 위해 커스텀 Sprockets 지시문을 만들었습니다

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 개발자분들께도 흥미로울 것 같아 공유합니다.

불행히도, 해당 변경사항은 프로덕션 환경에서 작동하지 않아 되돌려야 했습니다.

js 파일이 읽히는 시점과 비교했을 때 플러그인이 조금 늦게 로드되는 것 같습니다.

정상적으로 작동합니다. 곧 해당 변경사항을 다시 도입할 예정입니다.

드디어 이 기능을 코드에 적용했습니다.

참고로, 12개월 이내에 sprockets를 버리고 ember-cli 기반 빌드로 전환할 것으로 예상합니다. @eviltrout은 이미 이 전환에 대한 조사를 시작했습니다.

조기 알림 감사합니다. 그 방향으로의 조언이 큰 도움이 될 것입니다. cc @angus