在Clojure中,如果我这样做:
(require :reload 'foo.bar)
然后Clojure查找src / foo / bar.clj,并重新加载它。
现在,我想做这样的事情:
(reload-from-string 'foo.bar STR)
这样的语义是:重新加载命名空间'foo.bar,而不是编译src / foo / bar.clj,而是编译STR。
如何定义reload-from-string?
我需要在运行Clojure应用程序的服务器上热重新加载代码。我不想不断地将文件重新打包回来。到服务器(通过scp,sftp或fuse / sshfs)以便重新加载。因此,我宁愿只传递一个字符串。
谢谢!
答案 0 :(得分:1)
您可以使用read-string
,然后使用eval
。但请记住风险。将它们拆分的一个优点是,您可以在评估之前将结果列表中的内容列入白名单。
您可能也希望将*read-eval*
绑定为false。