Clojure:从字符串重新加载
编辑:我想要的基本上是加载字符串吗 问题: 在Clojure中,如果我这样做:Clojure:从字符串重新加载,clojure,Clojure,编辑:我想要的基本上是加载字符串吗 问题: 在Clojure中,如果我这样做: (require :reload 'foo.bar) 然后Clojure查找src/foo/bar.clj,并重新加载它 现在,我想做这样的事情: (reload-from-string 'foo.bar STR) 其语义是:重新加载名称空间“foo.bar”,但不是编译src/foo/bar.clj,而是编译STR 如何定义从字符串重新加载 上下文 我需要在运行Clojure应用程序的服务器上热重新加载代码。我
(require :reload 'foo.bar)
然后Clojure查找src/foo/bar.clj,并重新加载它
现在,我想做这样的事情:
(reload-from-string 'foo.bar STR)
其语义是:重新加载名称空间“foo.bar”,但不是编译src/foo/bar.clj,而是编译STR
如何定义从字符串重新加载
上下文
我需要在运行Clojure应用程序的服务器上热重新加载代码。我不想为了重新加载而不断地将文件来回移动到服务器(通过scp、sftp或fuse/sshfs)。因此,我更愿意传递一个字符串
谢谢 您可以使用
读取字符串
,然后使用eval
。但要记住风险。将它们分开的一个优点是,您可以在评估结果列表之前将结果列表中的内容列为白名单
您可能还想将
*read eval*
绑定为false。如果服务器是防火墙,swank会话在本地端口上,并且我在+do端口转发中使用ssh,那么风险在哪里?除非您有内部入侵者,否则听起来不会太大。但问题并不是很具体。你是对的,有些假设我没有写下来。你的回答对上述问题是正确的。