
? Алёна
02.12.2016
07:47:26
И не вздумай к жс прикасатьсч, а то потом посоны уважать перестанкт.

Zulkar
02.12.2016
07:50:04

? Алёна
02.12.2016
07:50:48

Google

Zulkar
02.12.2016
07:51:20

? Алёна
02.12.2016
07:51:53
Ну что ж, подождать лет 10 можно.

Zulkar
02.12.2016
07:53:16
а Кобол где то в бизнесе применяют? Если не ученные только?

Andrey ?
02.12.2016
07:55:34
У него даже в названии слово бизнес есть

I
02.12.2016
07:58:16
пишите уж на ClojureScript сразу, будьте нормальными разработчиками

ⰿⰰⰾⱏ
02.12.2016
07:58:50

I
02.12.2016
07:58:56
да
можно бек на Clojure, фронт на ClojureScript
фреймворков там весьма много поверх Ring'a

ⰿⰰⰾⱏ
02.12.2016
07:59:29

I
02.12.2016
07:59:42
не-не-не, эликсир на проде ругают)
а про кложу только положительное видел

Google

ⰿⰰⰾⱏ
02.12.2016
08:04:28

I
02.12.2016
08:04:55
у вас эликсир на проде?

Artur
02.12.2016
08:05:39
Opal же

I
02.12.2016
08:07:17
а не надо sprockets тогда

Anon
02.12.2016
08:35:11
Есть модель с колонкой-стрингом, из которой составляется динамик руты. Как вариант сделал так: в load динамик-рутера идет итерация по всем записям в таблице (их около 50 штук), проверяю есть ли что-то в поле slug, если есть рисую руты. На сайте есть возможность создавать/редактировать эти объекты, потому поставил в модели after_save где проверяю изменился ли slug и если да то ДинамикРутер.релоад
Насколько это хороший подход? Что-то может сломаться пока, по идее, все динамик руты заново перерисовываются?

Alex
02.12.2016
08:39:06
пример пары динамик роутов?

I
02.12.2016
08:40:38
да, я немного тоже был опечален в свое время. Как будет время - поплотней засяду

Anon
02.12.2016
08:43:20
get "/#{product.slug}"/terms", to "product#terms", product_id: product.id
get "/#{product.slug}", to: redirect("#{product.slug}/apply")
get "/#{product.slug}", to: "product/apply", product_id: product.id
get "/#{product.slug}/apply", to: "product#apply", product_id: product.id
последнюю накосячил
Так как создавать/изменять эти объекты могу только я, то как вариант рассматриваю кнопку, по которой будут релоадиться руты, без всяких афтер_сейв, но если первый вариант будет достаточно быстрым и не создавать проблем юзерам то он более предпочтительный

Alex
02.12.2016
08:45:52
Это какой то бред, роут может принимать :slug и уже сам искать в базе
ему не нужно быть динамическим

I
02.12.2016
08:46:09

Anon
02.12.2016
08:46:33
вэйт, можно пример?

Alex
02.12.2016
08:47:46
get "/:slug"?
И дальше в контроллере разруливаешь

Anon
02.12.2016
08:48:17
тут просто в задумке будет еще варианты вроде
"/#{product.company_slug}/#{product.slug}"

I
02.12.2016
08:48:49
/:company_slug/:product_slug - пожалуйста

Alex
02.12.2016
08:48:54
Вот вот

Google

I
02.12.2016
08:48:56
я могу так долго писать

Alex
02.12.2016
08:48:59
и уже в контроллере логику пишешь.
Сложно придумать кейс где нужен динамический роут, и то он там просто get /:everything, constraints: {everything: /.*/} будет

I
02.12.2016
08:49:38
можно еще get "/:company_slug/:product_slug/:action", если уж вот прямо совсем хочется что-то поделать свое
экшен в контроллере за 50 строк.... эх, плакать че-то хочется

Alex
02.12.2016
08:54:19

I
02.12.2016
08:54:32
все тот же OpenEd :)
он еще и из коробки на локали не пашет(кек, никто меня в хероку-группу не добавил), а оттуда дампы грузятся на локаль
поэтому чисто на уровне тестов все делаю
что-то я вчера код на active_interaction там переписал этот, но особо лучше не стало, кода только больше стало(там просто за эти 50 строк вызовы на 15 моделей, притом они логически разделены)

Alex
02.12.2016
08:57:35
Кода может стать не меньше но его может стать проще поддерживать

I
02.12.2016
08:57:59
в итоге сам переписал на свои объекты, перестроил логику - получилось то же самое, но короче.
Ну и тестами обложил свои классы

Alex
02.12.2016
08:58:14
Тест на контроллер -> Интерактор -> Тест на интерактор -> Рефакторинг контроллера
Правильно сделал.

I
02.12.2016
08:59:10
кстати, у меня получилось почти то, что в https://github.com/collectiveidea/interactor
Он немного от active_interactions отличается.

Alex
02.12.2016
08:59:45
Он сильно отличается
У него есть контекст и органайзеры

Сергей
02.12.2016
09:00:34
test

I
02.12.2016
09:00:53
Органайзер - это агрегатор интеракторов, так?

Alex
02.12.2016
09:01:16
https://github.com/collectiveidea/interactor#organizers

Google

I
02.12.2016
09:02:04
мне, кстати, такой органайзер и нужен для дальнейшего рефакторинга
спасибо :)
там есть контекст зафейлится - цепочка отвалится, да?

Alex
02.12.2016
09:02:41
Прочти всю главу по органайзеру

I
02.12.2016
09:02:43
ну, судя по доке)

Admin
ERROR: S client not available

Alex
02.12.2016
09:02:45
там все все прямо написано

Zulkar
02.12.2016
09:02:55
traiblazer это оболчка над interactor? если правильно выразился

Alex
02.12.2016
09:03:10
у trailblazer - operations

I
02.12.2016
09:03:13

Alex
02.12.2016
09:03:16
Я с ним не работал но наверняка не тоже самое.

I
02.12.2016
09:03:24
не, не тоже самое

Alex
02.12.2016
09:03:32
Гем примитивный
ему не нужны зависимости

I
02.12.2016
09:03:43
блейзер-то?
да, операция - это практически вся логика экшена выносится в него
за исключением того, что в reform выносится взаимодействие со вводом/редактированием информации
а interactor - это меньшая единица операций над данными
как раз вот органайзер содержит в себе несколько интеракторов, по сути, он похож на операцию. Только у него можно контекст завалить и закончить. Как в промисах в js.

Alex
02.12.2016
09:07:51
все смешалось в доме облонских
и trailblazer и interactor и промисы

Google

Alex
02.12.2016
09:08:08
Эт все разные вещи.

I
02.12.2016
09:08:32
не-не, я о логических параллелях
работа с контекстом в рамках органайзера вполне себе напоминает работу с цепочками промисов

Alex
02.12.2016
09:09:19
нет

I
02.12.2016
09:09:26
чем же нет?

Zulkar
02.12.2016
09:09:38

Alex
02.12.2016
09:09:47
цепочка промисов от начала и до конца выполняется насколько я помнюб, даже если одна из них провалится это надо явно ловить

I
02.12.2016
09:09:51
trailblazer - эо фреймворк

Alex
02.12.2016
09:10:03

I
02.12.2016
09:10:28
если в промисе последующем у тебя нет обработки блока с ошибкой - то он скипается, насколько я помню

Alex
02.12.2016
09:11:04
все равно не понимаю зачем приплетать сюды промисы.

I
02.12.2016
09:11:46
флоу работы с данными похож
я могу еще работу с монадами в том же js сюда привести, она так же выглядит