
john
09.01.2018
13:47:34
не, это тестовое на собес

ojab
09.01.2018
13:47:58

Alex
09.01.2018
13:48:22
.permutation
=> #<Enumerator: [81, 8, 299, 85]:permutation>
true

Google

Dmitriy
09.01.2018
13:48:38
но решение красивое

ojab
09.01.2018
13:48:56
да не будет оно перебирать, оно Enumerator создаст

wi11son
09.01.2018
13:49:10
рубаны

Roman
09.01.2018
13:49:16

wi11son
09.01.2018
13:49:50
может кто знает, как избавиться от постоянной компиляции bundle exec rails assets:precompile в circle ci

Roman
09.01.2018
13:50:03
cache добавить
у них там есть

wi11son
09.01.2018
13:50:09
запускается вебпакер, и почему-то кеш не работает

Roman
09.01.2018
13:50:33
кеш не работает на сам вебпакер или на все ассеты?

wi11son
09.01.2018
13:50:42
- run:
command: ls -AlhR --time-style=+"" app/javascript > asset_version && cat asset_version
- restore_cache:
keys:
- asset-v1-{{ checksum "asset_version" }}
- run:
command: bundle exec rails assets:precompile
- save_cache:
key: asset-v1-{{ checksum "asset_version" }}
paths:
- public/packs
- public/assets
- tmp/cache/assets/sprockets
это кусок конфига

Roman
09.01.2018
13:51:03
угу вроде норм

Google

wi11son
09.01.2018
13:51:20
на шаге restore_cache говорит, что всё находит
но всё равно запускает прекомпиляцию

Roman
09.01.2018
13:51:36
ну смотри, оно конечно будет запускать
просто смысл кеша в том, что sprockets найдут свои кеши и все будет быстро

rekero
09.01.2018
13:52:00

Roman
09.01.2018
13:52:03
а вебпакер вообще ничего не кеширует

rekero
09.01.2018
13:52:12
в том же шаге

Roman
09.01.2018
13:52:29

wi11son
09.01.2018
13:52:54
ага, на для render_view контроллер спек
когда проверяется что-то отрендеренное на страничке

Roman
09.01.2018
13:53:10
ну и просто feature specs
контроллер-спеки кстати уже пора убивать

wi11son
09.01.2018
13:53:48
если не провебпакерить, то оно будер ругаться, что ассетов не хватает
я согласен, но вот осталось

rekero
09.01.2018
13:54:01

Roman
09.01.2018
13:54:13
так правильно, вебпакер просто не использует никаких кешей, там нечего кешировать
ну это зависит от приложения
у нас например feature spec покрыто все приложение почти
так что там почти все ассеты и нужны в тестах

Google

Roman
09.01.2018
13:54:56
поэтому мы вначале один раз все компилим, а потом в параллель запускаем все тесты
и они уже берут готовые ассеты, а не пытаются сами собирать


wi11son
09.01.2018
13:55:40
warning: parser/current is loading parser/ruby24, which recognizes
warning: 2.4.0-compliant syntax, but you are running 2.4.1.
warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
yarn install v1.0.2
warning package.json: No license field
warning No license field
[1/4] Resolving packages...
warning yarn@1.3.2: It is recommended to install Yarn using the native installation method for your environment. See https://yarnpkg.com/en/docs/install
[2/4] Fetching packages...
info fsevents@1.1.1: The platform "linux" is incompatible with this module.
info "fsevents@1.1.1" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "ajv-keywords@1.5.1" has incorrect peer dependency "ajv@>=4.10.0".
[4/4] Building fresh packages...
success Saved lockfile.
Done in 176.46s.
кусок лога, походу оно каждый раз делает yarn install

rekero
09.01.2018
13:56:03

Roman
09.01.2018
13:56:18
ну у нас это серьезные жертвы
дофига тестов реально

wi11son
09.01.2018
13:57:32
кажется я понял
мне нужно просто еще в кеш класть npm пакеты, если package.json не изменился

Roman
09.01.2018
14:15:16

wi11son
09.01.2018
14:24:09
да, победил эту херню...
сделал еще один шаг
- restore_cache:
keys:
- npm-{{ checksum "package.json" }}
- run:
name: Install npm dependencies
command: yarn install
- save_cache:
key: npm-{{ checksum "package.json" }}
paths:
- node_modules
последний прогон занял 2:20 против 5:40 до этого
спасибо, чуваки

Roman
09.01.2018
16:16:04
не сказал бы что это более правильно

wi11son
09.01.2018
16:16:24
удалил
оно еще и не рабочее
вернулся к предыдущему решению

Roman
09.01.2018
16:16:43
хм
оно еще и не рабочее
а я знаю, почему. попробуй у себя набери yarn cache dir
скорее всего путь другой у ярна теперь

Данил
09.01.2018
17:40:36
Подскажите, как мне можно сравнить быстро два массива данных из postgresql (используется activerecord и 4 rails) и внешнию бд sql server. Выбрать данные то не проблема, но как теперь с наименьшими затратами сравнить? Записи в бд простые уникальный номер и два поля с данными. Нужно пройти по перечню записей из rails и проверить даты. Записей около 500к, делать такое нужно раз в сутки. :( ну и желательно не сильно при этом напрягая обе бд.

Google

Marsel
09.01.2018
17:46:12
Залить из одной в другую в темповую таблицу
Если сравнение можно сделать с помощью sql
С помощью всяких copy можно залить очень быстро

Данил
09.01.2018
17:50:08
А так чтобы на ruby не насилуя бд?
Может как то в память массивы данных запихать и там сравнить...

Marsel
09.01.2018
17:53:58
Из одной бд экспорт таблицы в файл (как именно - зависит от бд), этот файл импорт во вторую бд. Для postgresql делал через pg_copy
Дальше зависит от того как именно надо сравнивать
Если это в sql возможно перевести, то я бы так сделал наверное
Но по идее 500к можно и в памяти обработать
Селект оттуда, селект отсюда, получил два массива. Сравнил как тебе надо

Данил
09.01.2018
17:59:51

Marsel
09.01.2018
18:00:08
А как тебе надо сравнивать?
Каждый из первой бд с каждым из второй?

Данил
09.01.2018
18:01:51
Каждый из первой бд с одним из второй. У них уникальный номер совпадает, нужно найти те элементы массива у которых не совпали даты

Marsel
09.01.2018
18:04:37
Тогда я бы в одну бд залил, и потом select join... where

Данил
09.01.2018
18:06:36
Не удобно заливать, это нужно делать регулярно.
Если я сделаю
all = Model.all
А потом
all.where(1)
Во втором случае там где where будет запрос к бд? Или к выбранным данным?

Fedor
09.01.2018
18:10:20
Там хитро

Marsel
09.01.2018
18:10:31
Там лениво вроде

Google

Fedor
09.01.2018
18:10:56
Если ты делаешь all = Model.all, то запроса к базе не будет
Но если ты делаешь это в консоли, то она постарается вывести результат на экран, и в этот момент произойдет запрос к базе
Соответственно второй вызов будет выборкой из полученных данных
А если не в консоли, а в коде, то в момент, когда данные реально понадобятся, сформируется запрос со всеми where и прочим и вызовется

Данил
09.01.2018
18:13:08
Просто в консоли и пробовал, и при второй команде, в консоли писалось что выполнен sql запрос за столько то времени, или он обманывал?

Fedor
09.01.2018
18:14:24
Можно, но зачем?

Anton
09.01.2018
22:31:08
мб кому интересно будет, начал тут делать authorization библиотеку для руби без привязки к фреймворкам и зависимостям, посмотреть можно тут:
https://github.com/davydovanton/kan
любой фидбэк приветствуется

Максим
10.01.2018
07:42:29
пацаны
как понять мидл ли я уже

Anton
10.01.2018
07:44:34
А если серьёзно - никак

Максим
10.01.2018
07:44:46
ну а реал
вот какой бейслайн того что должен уметь мидл?

Anton
10.01.2018
07:46:53
Есть разные идеи
Я считаю, что достаточно ответственность за свой код брать