我有一个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