Fork me on GitHub
#clojure-russia
<
2017-05-29
>
artemyarulin03:05:12

@misha да просто монорепо - один репо, все проекты. На работе вот протащил монорепо еще, все довольны, тока времени отнимает прилично чтоб билдилось все быстро, тесты, CI\CD, депенденси, деплой, да чтоб всем подходило. Если пара проектиков всего то проще lein похачить и указать :source-paths ["src" "test" "shared"]

artemyarulin03:05:58

>корень гита в папке с проектами сделал? ну и да и нет. Смысл то чтоб оно все начинало работать вместе, шарить конфиги, депенденси, либы

artemyarulin03:05:31

я к тому что миграция в монорепо это не быстро

y.khmelevskii08:05:18

я для организации нескольких сервисов в одной моно-репке использую lein-modules. вроде удобно, но у меня проект еще крошечный

y.khmelevskii12:05:34

кто-то использует lein-environ? Можно, установленную через него, переменную окружения, получить в .edn файле? Например так: https://github.com/juxt/joplin/blob/master/example/joplin/joplin.edn#L24

mike_ananev13:05:12

@y.khmelevskii я иногда пользую environ. он переменные окружения устанавливать не может. вместо этого он при старте формирует некую мапу, куда попадают переменные окружения, установленные извне (в ОС) + специальные переменные из .lein-env файла в формате EDN. При включении в проект envviron можно использовать секции :dev и :uberjar в файле проекта для установки специальных переменных. Из этих секций при старте кода они автоматически попадут в EDN файл .lein-env

y.khmelevskii13:05:24

это я понял, и это работает. столкнулся именно с проблемой, когда мне эта переменная нужна в edn файле

mike_ananev13:05:27

Когда код будет стартовать, то environ всегда берет настройки из .lein-env Если этого файла нет, то этот файл будет создан на основе данных из project.clj

mike_ananev13:05:41

в этом EDN файле как раз и можно делать кастомизацию параметров от среды к среде

mike_ananev13:05:38

но я в последнее время больше использую настоящие переменные среды окружения ОС

y.khmelevskii13:05:58

в каком этом файле? .lein-env? у меня есть отдельный edn файл астройки конфигурации миграции БД, и там мне нужны переменные окружения. На сколько мне позволяют мои начальные знания clojure судить, то в edn файле я не могу сделать (require 'environ.core) и достать переменную

y.khmelevskii13:05:51

когда я в коде юзаю environ - то все круто, и проблем нет. тут проблема как раз что бы переменную окружения вставить в файл, который я приводил выше

mike_ananev13:05:28

да, environ берет настройки из .lein-env. Его структура определяется в project.clj в соотв. секциях. (dev, uberjar)

y.khmelevskii13:05:47

да, это я понимаю

y.khmelevskii13:05:30

я тут еще https://github.com/juxt/aero#envf нашел. он вроде решает мою проблему, но нужно на него посмотреть более детальней

mike_ananev13:05:49

TARGET_HOST из пример надо выносить в переменную окружения ОС. настройки конфигурации миграции могут быть в отдельном файле, например .lein-env. в коде, при старте приложения, я бы сделал update мапы с конфигами миграции данными из переменных окружения ОС.

mike_ananev13:05:25

ну то есть, например с помощью mount, у меня был бы кусочек кода в секции :start который бы делал приготовления с конфигами

mike_ananev13:05:01

я это делал с помощью merge двух мап, одна статичная, другая с такими же названиям ключей динамическая

y.khmelevskii13:05:13

идею я понял. сейчас попробую. неприятно еще то, что environ зачем-то переменную окружения TARGET_HOST превратит в target-host

mike_ananev13:05:33

да он все делает lowercase и меняет _ на -

mike_ananev13:05:47

и все возвращает keyword'ами

y.khmelevskii13:05:05

спасибо! буду пробовать

malch13:05:31

очень рекомендую aero

malch13:05:19

из всего, что мне приходилось использовать (в том числе environ), он самый приятный и гибкий

y.khmelevskii13:05:13

@malch я о нем как раз выше писал. присматриваюсь...

malch13:05:50

я понял, поддерживаю