2012-02-02 4 views
1

Est-il possible de configurer gâteau de telle sorte que, si test.clj ressemble à ceci:Changer le répertoire courant gâteau

(use 'java.io.File) 
(println (.getAbsolutePath (File. "."))) 

en cours d'exécution cake run test.clj imprime le répertoire courant, pas /home/retief/.cake/. ?

Exécution clojure test.clj fonctionne correctement, avec mon script clojure personnalisé (et très simple), mais cela nécessite que je démarre un nouveau jvm à chaque fois. Pouvoir utiliser le gâteau pour éviter cela et garder mon répertoire courant serait utile.

Je reconnais que l'utilisation de gâteaux dans un projet clojure réel définit le répertoire courant sur la racine du projet, mais j'essaie de trouver quelque chose qui fonctionnerait pour des tâches de script plus générales.

Répondre

1

La JVM persistante de Cake ne voit pas dans quel répertoire se trouve le processus client-cake au moment de votre appel car la JVM est déjà en cours d'exécution. Il sera probablement plus simple de concevoir vos scripts pour prendre le chemin comme argument.

ps: Le gâteau et le leiningen fusionnent quand même.

+0

C'est à peu près ce que j'ai deviné, mais passer dans un chemin relatif ne fonctionne pas (il n'est pas développé par le shell et si clojure ne connaît pas le répertoire courant, il ne peut en aucun cas décoder le path), et passer dans un chemin absolu est à peu près aussi ennuyeux que le temps de démarrage de jvm. La meilleure réponse est probablement de lancer un nouveau jvm ou d'utiliser clojurescript et Node.js, je suppose. – Retief

+0

pour mon travail avec nailgun et jython, nous avons ajouté un wrapper shell qui enregistre le chemin complet dans un fichier avec un tas d'autres choses. Cela peut être un peu pénible, même si cela peut faire une énorme différence. –

Questions connexes