2

编辑:我想要的基本上是加载字符串吗?

问题

在 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)。因此,我宁愿只传递一个字符串。

谢谢!

4

1 回答 1

1

您可以使用read-string然后eval. 但请记住风险。将它们分开的一个优点是您可以在评估结果列表之前将结果列表中的内容列入白名单。

您可能还想绑定*read-eval*到 false 。

于 2012-05-15T11:01:46.883 回答