Fork me on GitHub
#clojure-russia
<
2016-07-21
>
artemyarulin05:07:23

угу, так работает. Мне кажется тут именно специфика is, ибо

@(p/then (p/promise 42) (fn[_](throw (Exception. "a")))) ;; throws
@(p/then (p/promise 42) (fn [_] (is (= 2 1)))) ;; passes

artemyarulin05:07:45

ой, перечитал что ты написал, вот это тоже не работает:

(p/catch (p/then (p/promise 42) (fn[_](is (= 2 1))))
         (fn[e](print "Error" e)))

comerc05:07:31

@nicola: а на тему применения-понимания Om Next еще не было трансляции, или я пропустил? Пока в копилке только рассказ @piranha https://youtu.be/KxZGeD2ugOw?t=3820

artemyarulin05:07:51

@comerc: ты не смотрел кста враппер над ом-некст? не могу вспомнить название, но вроде от awkay как раз

comerc05:07:59

Хорошо бы запытать кого-то полностью :)

comerc06:07:22

@artemyarulin: т.к. Om Next сам себе уже враппер, то загуглить - непростая задача :)

comerc06:07:36

У awkay прошерстил гитхаб - вроде нет там ничего такого

artemyarulin06:07:21

эх не могу вспомнить название, может и не awkay...

niquola06:07:06

@comerc: давайте сделаем! Только кто за него замолвит? На крайняк давайте Нолана звать.

abtv06:07:24

давайте про Om.Next после 7 августа поговорим, а?) обсудить было бы очень интересно, но тут у меня видеосвязи ближайшие две недели не будет) @nicola @comerc

abtv07:07:51

кстати, если звать кого-то из англоговорящих, то Эрик Норманд (https://github.com/ericnormand) готов поучаствовать в нашем хэнгауте, надо только договориться о времени @nicola

artemyarulin07:07:10

Разобрался с promesa, проблема сводится к тому что ошибки не репортятся даже при (.start (Thread. (fn [] (is false)))).

artemyarulin07:07:17

Все сводится к функции clojure.test/report которая разворачивается в

(let* []
    (clojure.core/push-thread-bindings
     (clojure.core/hash-map (var clojure.core/*out*) clojure.test/*test-out*))
    (try
      (clojure.core/println "\nFAIL in")
      (finally (clojure.core/pop-thread-bindings))))
При нормальной работе >clojure.test/test-out #object[java.io.PrintWriter 0x6211eb86 java.io.PrintWriter@6211eb86] с другого треда >clojure.test/test-out #object[java.io.OutputStreamWriter 0x67eee9ec java.io.OutputStreamWriter@67eee9ec]

artemyarulin07:07:15

Уточнение - out не причем, ошибки собираются с inc-report-counter, но сути не меняет. Ассерты не работаю если в другом треде, как так ащще

artemyarulin08:07:26

Все - перестаю спамить, последнее: Ассерты работают и из других тредов, надо просто dynamic environment со всеми dynamic переменными перенести в новый тред. Core.async это делает и все там работает, promesa нет, поэтому не работает. Детали кому интересно в https://github.com/funcool/promesa/issues/25

a.espolov12:07:24

так вот еще что появилось

artemyarulin12:07:21

@a.espolov: А во, вроде оно ага. Я правда хз как оно в реальности но вроде как абстрагирует от некоторых сложностей ома

a.espolov12:07:33

@artemyarulin: правда lein template так и не работает с марта, только из todomvc свое приложение собирать

asolovyov14:07:42

@nicola: а в route-map нельзя матчить что-то в параметрах? Типа если через двоеточие что-то?

artemyarulin14:07:16

тут вроде грили - но я первый раз попробовал. Можно держать сразу 2 репла, CLJS и CLJ и если есть один файл CLJC то можно евалить его функции в нужном репле переключаясь с clojurescript-mode <> clojure-mode

rmuslimov14:07:46

там в сидре кажется можно кастомно задать REPL, чтобы моды не переключать

artemyarulin14:07:30

Ну иногда когда CLJC пишу то как раз этого и хочется - запустить тест на одном репле, потом на другом

niquola14:07:33

@asolovyov: я вобще думал его с clojure.spec интегрировать - если предикат отработал будет матчить

niquola14:07:57

Так пока нельзя, но если опишешь что надо - я добавлю

niquola14:07:42

можно вобще функцию будет вставить вместо ключа {[param-fn] {:GET 'handler}}

asolovyov14:07:42

ну у меня есть урл /something/id1:id2/ и я хочу его отдельно заматчить от кейса, когда /something/id3/ :))

niquola16:07:39

Есть предложения как будет поизящнее?

niquola16:07:14

Может не делать таких урлов? ;)

asolovyov17:07:57

@nicola: может, но уже есть такой урл, эхехе )

asolovyov17:07:14

@comerc: та чуточку лень прыгать по либам туда-сюда, и route-map всем устраивал

asolovyov17:07:30

а, тьфу

asolovyov17:07:34

это про валидацию?

asolovyov17:07:02

@nicola: в джанге просто регекспами это сделано, а что делать в нормальной ситуации - я хз:)

niquola17:07:14

Думаю функцией будет самое гибкое

niquola17:07:55

{[fn] branch} - если функция вернула hash-map - значит заматчилась и мы его мерджим в params?

asolovyov17:07:09

да, наверное, звучит разумно

asolovyov17:07:58

@nicola: бтв, если хочешь, можно на страничке либы написать real-world юзеров 🙂

asolovyov17:07:11

у меня route-map в продакшене с ... февраля, что ли?

niquola18:07:36

Ты сможешь с дева потестить, если все ок я опубликую - https://github.com/niquola/route-map#functional-params

kuzmin_m19:07:49

Привет! Я разбираюсь с clojure окружением, в частности с cider, lein, mount. Есть профиль dev со своим конфигом, этот профиль загружается в repl. Есть профиль test с другим конфигом, который запускается на ci. В конфиге, например, разные настройки базы данных. Когда я работаю в emacs, я хочу запускать тесты через cider в repl, но тут уже запущено приложение через mount с настройками dev. Я весь день гуглил, и из полезного нашел документацию по mount, статью про компоненты в блоге @yogthos, boot pods и yurt. Но все равно не понимаю как это все вместе связать: cider, repl, profile, mount. Подскажите каков ваш workflow, может есть примеры проектов, какие-то статьи. Собственно натолкнулся на это после просмотра хэнгаутса clj tools, за что спасибо))