2013-08-31 22 views
11

Clojure REPL uygulamasına başladığımda önceden yüklemek istediğim bazı clojure işlevlerim var. Bir REPL bağlamında kullanmıyorsanız, işlevler çok fazla kullanılamaz.Leiningen repl'de bir clojure dosyası nasıl yüklenir?

Eğer yardımcı olursa, genellikle bir clojure REPL'yi benim için başlatmak için leiningen kullanıyorum.

Benim için bu tanımları içeren bir clojure dosyasını önceden yüklemek için clojure'a (veya düz clojure aracılığıyla kullanılabilir değilse leiningen) nasıl anlatabilirim?

cevap

11

bu

/path/to/project/dev/user.clj içine amacıyla varsayılan repl ad alanında istediğiniz kodu koymak benim favori yöntemlerinden the leiningen sample project birinde tarif yapmanın birkaç yolu vardır:

(ns user) 
(def foo 42) 

ve project.clj dosyasına şöyle bir satır ekleyin:

(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"]) 

Bu, bu s iken dev içindir açıklık getiriyor: varsayılan ad alanına yüklenene kadar.

Eğer nrepl-jack-in formu emacs'ı veya "Lein Repl" çalıştırdığınızda kabuk oluşturmak, yüklenmiş sizin koduyla bir user> ad ile karşılandı edilmelidir: mükemmel bağlantıdan

; nREPL 0.1.6 
user> foo 
42 
+3

+1. Cevabınızı _any_ projesi için (ör. '~/.lein/profiles.clj') kullanmanın bir yolunu ekleyebilir ve aynı zamanda emacs kullanmadığımı varsayabilirsin (örneğin, no 'nrepl-jack-in ', sadece normal terminal ekranı]? – djhaskin987

+2

Anwser'a bunun bir parçası eklenmiştir ve bunun için global olarak bu ayarları kullanmak tercih edilebilir: repl-options: bir kullanıcı ad alanı tanımlamak için .lein/profiles.clj dosyasındaki bir profildeki init. –

+1

Ekstra:: source-paths girdisini bir profilin içine koyarsanız daha uygun olacağını düşünüyorum. ': Dev' profili özellikle uygun olurdu. Cevap bekledikçe, 'dev' kodunun altında ne olursa olsun her zaman projeye dahil edilir. – Geoff

İlgili konular