【问题标题】:Clojure: reload from stringClojure:从字符串重新加载
【发布时间】:2012-05-22 19:11:37
【问题描述】:

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

问题

在 Clojure 中,如果我这样做:

(require :reload 'foo.bar)

然后 Clojure 查找 src/foo/bar.clj,并重新加载它。

现在,我想做这样的事情:

(reload-from-string 'foo.bar STR)

其语义是:reload namespace 'foo.bar,但不是编译 src/foo/bar.clj,而是编译 STR。

如何定义 reload-from-string?

上下文

我需要在运行 Clojure 应用程序的 服务器 上热重载代码。我不想为了重新加载而不得不不断地将文件来回移动到服务器(通过 scp、sftp 或 fuse/sshfs)。因此,我宁愿只传递一个字符串。

谢谢!

【问题讨论】:

    标签: clojure


    【解决方案1】:

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

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

    【讨论】:

    • 如果服务器有防火墙,swank session在本地端口,我ssh-in +做端口转发,风险在哪里?
    • 除非您有内部入侵者,否则听起来并不多。不过,这个问题并不是很具体。
    • 你说得对,有些假设我没有放下。您对上述问题的回答是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2021-02-11
    • 2011-06-23
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多