【问题标题】:How does one pre-load a clojure file in the leiningen repl?如何在 leiningen repl 中预加载 clojure 文件?
【发布时间】:2013-09-04 07:19:50
【问题描述】:

我有一些 clojure 函数,我希望在启动 clojure REPL 时预加载它们。除非您在 REPL 的上下文中使用这些函数,否则这些函数并没有多大用处。

如果有帮助,我通常会使用 leiningen 为我启动一个 clojure REPL。

我如何告诉 clojure(或 leiningen,如果它不能通过 flat clojure 获得)为我预加载包含这些定义的 clojure 文件?

【问题讨论】:

    标签: clojure leiningen read-eval-print-loop


    【解决方案1】:

    the leiningen sample project 中描述了几种方法可以做到这一点 我最喜欢的方法之一是将默认 repl 命名空间中所需的代码放入

    /path/to/project/dev/user.clj:

    (ns user)
    (def foo 42)
    

    并在 project.clj 文件中添加这样一行:

    (defproject hello "0.1.0-SNAPSHOT"
      :description "FIXME: write description"
      :url "http://example.com/FIXME"
      :license {:name "Eclipse Public License"
                :url "http://www.eclipse.org/legal/epl-v10.html"}
      :dependencies [[org.clojure/clojure "1.5.1"]]
      :source-paths ["dev"])
    

    这清楚地表明这是用于开发的,同时仍将其加载到默认命名空间中。

    当您从 emacs 运行 nrepl-jack-in 或从 shell 运行“lein repl”时,您应该会看到一个 user> 命名空间并加载您的代码:

    ; nREPL 0.1.6
    user> foo
    42
    

    【讨论】:

    • +1 以获得出色的链接。您是否还可以在答案中包含为 any 项目执行此操作的方法(例如,使用'~/.lein/profiles.clj')并假设我没有使用 emacs(即,没有“nrepl-jack-in”,只是正常的终端屏幕)?
    • 将此部分添加到 anwser 中,对于全局设置,最好在 .lein/profiles.clj 的配置文件中使用 :repl-options :init 来使用定义用户命名空间.
    • 我认为将额外的:source-paths 条目放在配置文件中会更合适。我认为:dev 配置文件特别合适。正如答案所示,dev 下的任何代码仍然始终包含在项目中。
    • 我也必须包含"src":source-paths ["src" "dev"] 否则我可以加载我的命名空间。
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 2015-09-21
    • 2013-03-31
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多