2013-08-31 7 views
11

Mam niektóre funkcje clojure, które chciałbym wstępnie załadowany, gdy uruchamiam clojure REPL. Funkcje te nie są przydatne, chyba że używa się ich w kontekście REPL.W jaki sposób można wstępnie załadować plik clojure do repliki leiningen?

Jeśli to pomaga, generalnie używam leiningen, aby rozpocząć dla mnie licencję clojure REPL.

Jak mogę powiedzieć, że clojure (lub leiningen, jeśli nie jest dostępny przez płaskie clojure), aby załadować wcześniej plik clojure zawierający te definicje?

Odpowiedz

11

Istnieje kilka sposobów, aby to zrobić opisane w the leiningen sample project jednym z moich ulubionych metod jest więc umieścić kod, który ma w domyślnej przestrzeni nazw repl do

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

(ns user) 
(def foo 42) 

i dodać taką linię do pliku 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"]) 

to jasno wynika, że ​​jest to dla dev while s dopóki nie zostanie załadowany do domyślnej przestrzeni nazw.

Po uruchomieniu nrepl-jack-in emacsowi formie lub „Lein repl” tworzą powłokę, powinien być witany z user> nazw z kodem załadowanego:

; nREPL 0.1.6 
user> foo 
42 
+3

+1 za doskonałą link. Czy w swojej odpowiedzi mógłbyś również uwzględnić sposób, aby zrobić to dla projektu _any_ (np. Używając "~/.lein/profiles.clj"), a także założyć, że nie używam emacsa (tj. Nie ma 'nrepl-jack-in ", tylko normalny ekran terminala)? – djhaskin987

+2

Dodała część tego do anwser, a dla ustawień na całym świecie może być lepiej użyć: repl-options: init w profilu w .lein/profiles.clj do używania definiowania przestrzeni nazw użytkownika. –

+1

Myślę, że bardziej odpowiednie byłoby umieszczenie dodatkowego wpisu ': source-paths' wewnątrz profilu. Profil ": dev" byłby szczególnie odpowiedni, jak sądzę. Jak sama brzmi odpowiedź, jakikolwiek kod jest pod "dev", a jednocześnie cały czas jest włączony do projektu. – Geoff