leinigen repl พร้อมโปรไฟล์

คำถามนี้เป็นการติดตามผล อย่างไร มีการโหลดไฟล์ clojure ล่วงหน้าใน leiningen repl หรือไม่

~/.lein/profiles.clj ของฉันมีลักษณะดังนี้:

{  
  :user {:source-paths ["C:/Users/username/.lein/src"] }
}

~/.lein/src/user.clj ของฉันอาจมีลักษณะดังนี้:

(ns user)

(println "user file loaded")  

เมื่อฉันเรียกใช้ lein repl ภายในโฟลเดอร์ที่มี project.clj ไฟล์ user.clj จะถูกดำเนินการ แต่เมื่อฉันเรียกใช้ lein repl จากโฟลเดอร์อื่น ไฟล์นั้นจะไม่โหลดโปรไฟล์ผู้ใช้ของฉัน มีวิธีแก้ไขปัญหานี้หรือเป็นพฤติกรรมนี้โดยการออกแบบหรือไม่ อันที่จริง ฉันรู้ว่า Leinigen กำลังโหลด profile.clj ของฉัน (แม้ว่าจะไม่มี project.clj ก็ตาม) เพราะมีสิ่งอื่นอยู่ข้างในด้วย (นำมาจาก แมงดาบทความตัวแทนของฉัน) Leinigen กำลังประสบปัญหากับการตั้งค่าเส้นทางแหล่งที่มาเพิ่มเติมของฉัน

อีกคำถามหนึ่งที่เกี่ยวข้องกับเรื่องนี้คือฉันต้องระบุเส้นทางแบบเต็มของโฟลเดอร์สำหรับไฟล์ user.clj ของฉัน : "C:/Users/username/.lein/src" เมื่อฉันเปลี่ยนเป็น "~/.lein/src" leiningen ไม่สามารถโหลดไฟล์ของฉันได้


person shaft    schedule 15.04.2014    source แหล่งที่มา
comment
คุณเห็นสิ่งใดในเอกสารประกอบที่แนะนำว่า ~ ใน source-path ควรใช้งานได้หรือไม่ โดยทั่วไปการขยายตัวหนอนจะใช้ได้เฉพาะในเชลล์ Linux เท่านั้น - ฉันไม่คาดหวังว่ามันจะทำงานจากภายใน Java หรือบนแพลตฟอร์ม Windows   -  person Alex    schedule 15.04.2014
comment
ข้อดี: แทนที่ด้วย {:source-paths [~(str (System/getProperty user.home) /.lein/src)]} และใช้งานได้ แต่ฉันยังไม่สามารถใช้งานได้จากโฟลเดอร์ที่ไม่มี project.clj อยู่ข้างใน   -  person shaft    schedule 15.04.2014


คำตอบ (1)


ดูเหมือนว่าคุณเพียงต้องการโหลดโค้ดสำหรับเซสชัน lein repl ของคุณ ซึ่งทำได้โดยใช้คีย์ :init ของ :repl-options ใน profiles.clj ของคุณ คุณสามารถ load-file ไฟล์อื่นๆ ใน init ได้ หากคุณต้องการจัดระเบียบในลักษณะนั้น

{:user 
  {:repl-options 
    {:init (load-file "path-to-file/user.clj")} 
     ...}} 

หมายเหตุ: หากคุณใช้ตัวคั่นพาธแบบ Windows / คุณจะต้อง Escape เหล่านั้น //

person A. Webb    schedule 15.04.2014
comment
ขอบคุณ ตรงกับสิ่งที่ฉันกำลังมองหา ตัวอย่างต่อไปนี้ใช้งานได้สำหรับฉัน รวมถึงการโหลดสคริปต์ที่เกี่ยวข้องกับโฮมไดร์ของฉัน: {:user {:repl-options {:init (load-file (str (System/getProperty user.home)) /.lein/src/user .clj))}}} - person shaft; 15.04.2014
comment
อ่า ฉันทำงานผ่าน Cygwin บน Windows ถือว่าคุณใช้การอ้างอิง ~/ path เหมือนกัน - person A. Webb; 15.04.2014