2014-09-16 12 views
6

Używam Austin, aby skonfigurować REPL połączony z przeglądarką, a następnie przykład jego sample project, który używa Enlive do dodania skryptu REPL do strony.Jaki jest właściwy sposób włączenia REPLIKU przeglądarki na stronę, ale tylko w fazie rozwoju?

Teraz chciałbym wdrożyć moją aplikację, ale nie chcę, aby Austin lub mój REPL był na stronie w produkcji. Jaki jest zamierzony sposób używania REPL tylko w fazie rozwoju?

Czy istnieje sposób użycia Enlive jako oprogramowania pośredniego, którego mogłem używać w fazie rozwoju, a nie w produkcji?

+0

Jeśli zainstalowałeś Austina zgodnie z opisem w jego sekcji instalacyjnej w [leiningen dev profile] (https://github.com/technomancy/leiningen/blob/stable/doc/PROFILES.md), możesz użyć leiningens mechanizm wyboru profilu, aby upewnić się, że jest zainstalowany lub nie. Nie pomoże to jednak w radzeniu sobie z resztą dodatków, które musisz wykonać, aby zainstalować Austin (np. 'Require' calls itp.). – schaueho

+0

Właśnie, o to właśnie chodzi. Jak dodać Austin do mojej strony w sposób zależny od profilu? – Peeja

Odpowiedz

5

Zawsze istnieje coś, co wyjątkowo odróżnia środowisko produkcyjne od :dev, które można zastosować jako warunkowe: jeśli w wersji :dev wpisz wynik (browser-connected-repl-js); jeśli nie, nie rób tego.

Jeśli Twoje środowisko wdrażania nie ma takiej właściwości, sugeruję dodanie jednego, ponieważ ten rodzaj "tylko w środowisku X" przypadek użycia jest dość powszechny dla wielu rzeczy.


Z drugiej strony, jeśli szukasz, aby uniknąć konieczności Austina i jego zależności uwzględnione w produkcji kierowanej buduje całkowicie bez zmiany kodu, który używa browser-connected-repl-js, jedno rozwiązanie może być po prostu obojętne górę odpowiedni nazw Austin, np:

(ns cemerick.austin.repls) 

(defn browser-connected-repl-js [& _] "") 

Put że w cemerick/austin/repls.clj w katalogu, który jest zawarty w nie- :dev profilu twoi project.clj „s :source-paths. Teraz twój kod zostanie wdrożony do produkcji bez Austina i jego zależności, a twój kod będzie przezroczyście wywoływał powyższą fikcyjną funkcję (nic nie wstrzykując na twoich stronach).

+0

Brzmi tak, jakby to było zwykle robione trochę inaczej dla każdego projektu? Mogę to zrobić, ale martwiłem się, że czegoś mi brakuje. Najważniejsze jest to, że wolałbym, żeby Austin nie był depedencją/pluginem poza ': dev', ale teraz jest w formie' ns' przestrzeni nazw, w której mieszka mój program obsługi Pierścienia. Czy istnieje dobry wzór, aby to uzależnić? – Peeja

+1

Edytowane, aby zaproponować obejście, które eliminuje zależność Austin poza ': dev'. Są na to inne sposoby, ale mogą wymagać subtelnych zmian Austin; sugerowane podejście można teraz wdrożyć przy niewielkim wysiłku. – cemerick

+0

Interesujące. Dzięki! – Peeja

Powiązane problemy