我有一個clojure網絡應用程序(標準環形處理程序和碼頭服務器上的組合路徑),爲此我啓用了作爲中間件實時資產重新編譯的功能,該功能非常方便發展。當我們接近生產時,我想找到一種方法,不要在生產中加載該代碼,而是閱讀預編譯的資產(我可以將其作爲lein任務生成)。我如何在clojure網絡應用程序中有條件地加載功能
目前資產編譯機器存在於項目代碼中 - 它可以使用eval-in-project從lein任務加載,所以我可以在這兩個地方重複使用相同的代碼。但這意味着不需要的文件被編譯幷包含在生產應用程序中。
另一個問題是,我使用的是一種資產編譯工具,導致應用程序在初始化時無法加載,如果使用了uberjar,因爲它使用了v8的本地綁定,不需要)當預編譯資產可用時。
我該如何避免在生產uberjar中加載此代碼,但仍然受益於開發和測試期間在運行時動態重新編譯?
看看[Environ](https://github.com/weavejester/environ)以及添加'dev'和'uberjar'配置文件的選項。 – sbensu 2015-04-04 22:11:08
謝謝 - 我已經在使用environ進行配置管理,所以noisesmith的回答很簡單。 – flightlessbird 2015-04-04 23:42:54