@rubylang

Страница 1161 из 1684
Fedor
07.08.2017
07:04:53
более подробно могу попробовать объяснить, если подробнее распишешь что тебе надо

но вообще можешь посмотреть, как делают flash messages на бутстрапе

там обычно во вьюхе делается flash.each {|f| render_flash(f) } и соответсвенно если флэши есть, то они отрендарятся и отобразятся на странице

но они никуда не исчезнут и их надо будет закрыть руками

Google
Nikita
07.08.2017
07:07:39
@FedorKoshel да не, мой попап - это как раз таки статический html и мне его нужно рисовать

вот и я спрашиваю - как через контроллер рисовать его поверх вьюхи?

Fedor
07.08.2017
07:08:58
ну просто делаешь в контроллере какой-то флаг, и потом во вьюхе его проверяешь и подключаешь партиал с попапом

или можно сделать в контроллере метод с проверкой, и cделать его helper_method

и вызывать из вьюхи вместо хэлдпера

Nikita
07.08.2017
07:14:41
ну примерно понял, спасибо

ojab
07.08.2017
07:51:33
а алиасинг полей нету? допустим пусть в БД будет поле 'type' AR пусть думает что это поле my_type
suddenly http://api.rubyonrails.org/classes/ActiveModel/AttributeMethods/ClassMethods.html#method-i-alias_attribute

Di
07.08.2017
07:52:27
Народ, подскажите плз по такому моменту. Есть куча мелких кусков кода в проекте для фоновой обработки. Сейчас это сделано тредами, но есть желание переделать это на background jobs. Но для каждого куска кода заводить воркера отдельного мне кажется не удобно. И возникла идея сделать некую общую джобу, туда просто передавать в блоке кусок кода для фоновой работы, а в самой джобе просто йелдить блок. Это вообще законно?

ojab
07.08.2017
07:56:40
вообще не очень, в общем случае джобы сериализуются после постановки в очередь и десерилизуются перед выполнением

твой код сериализоваться не может, очевидно

с какими-то job adapter'ами, может, сработает

Di
07.08.2017
08:05:00
Пичалька. А как тогда лучше сделать? Писать сто воркеров по одной строчке кода грустняво.

ojab
07.08.2017
08:07:30
А зачем их вообще переделываться на background jobs?

Google
Di
07.08.2017
08:31:49
Память утекает. Мне подсказывали что когда active record работает в треде она не всегда закрывает соединение с бд, у нас растет пул постгреса до неприличных величин. А сайдкик и бэкграунд джобы вроде как стильно, модно, молодежно, вот и думал на них переехать. Либо как вариант попробовать явно ActiveRecord::Base.connection_pool.release_connection делать.

ojab
07.08.2017
08:34:38
Есть http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html#method-i-with_connection который сам отдаёт соединения после завершения block'а

Fedor
07.08.2017
08:35:03
ага, или можно подчищать в треде ручками

или, если вам не нужно совместное использование данных, выкидывать в процессы, что бы система за ними сама подчищала

только надо их максимально тонкими сделать

я когда-то так боролся с капибарой, у нее при использовании phantomjs тоже память течет

ojab
07.08.2017
08:36:49
но, опять же, непонятно как оно сейчас используется и получится ли

Di
07.08.2017
08:59:25
но, опять же, непонятно как оно сейчас используется и получится ли
Да, кул идея кстати, в голову не пришло. Я так понимаю ключевой момент насчет получится ли в сериализации?

ojab
07.08.2017
09:00:59
ага, то бишь надо смотреть как/какие аргументы передаются и пр.

Fedor
07.08.2017
09:03:13
А это как?
у поток в отличии от процессов общее адресное пространство в рамках системы, и иногда именно ради этого ими и пользуются, что бы в разных потоках менять одни и те же данные

хотя это далеко не тривиальный процесс, поскольку это один сплошной рейс кондишен

если это не нужно, то перейти от потоков к процессам можно практически без потерь

но, за счет разделения ресурсов, потоки инициализируются быстрее процессов

поэтому я и писал, что процессы надо делать максимально легкими и быстрыми

Di
07.08.2017
09:05:04
А, вот оно что. Ну это про мьютексы и прочее высшее кунгфу? У меня да, проще, поэтому наверное на процессы переписать было бы правильнее.

поэтому я и писал, что процессы надо делать максимально легкими и быстрыми
Ну если фоновая задача нетребовательна к скорости, то процессы ок, да?

Ну чтобы не писать воркера на каждый чих.

Google
Fedor
07.08.2017
09:09:25
если сделать что-то вроде rails c то можно наглядно увидеть сколько времени инициализируется релься

если в этой фоновой джобе тоже инициализируется рельса, то это гигантская задержка будет

надо писать в виде обычного ruby скрипта с подключением необходимого минимума модулей

Di
07.08.2017
09:16:05
Да, интересно. Ньюансы everywere )

Vadim
07.08.2017
09:29:38
Ребята, никто не сталкивался с такой проблемой ? Переодически возникает такая ситуация: 1. делаем первый деплой через капистрану 2. сразу делаем второй деплой через капистрану и получаем ошибку ActiveRecord::ConcurrentMigrationError Cannot run migrations because another migration process is currently running. Деплой идет через CI гитлаба БД - Postgres Как убить этот лок в постгресе? Из-за чего такое может получаться?

ojab
07.08.2017
09:35:40
миграция от первого деплоя ещё не завершилась, очевидно

Fedor
07.08.2017
09:36:01
+

не надо делать два деплоя подряд

Vadim
07.08.2017
09:36:15
Но это как-то странно, ведь деплой закончен

Fedor
07.08.2017
09:37:01
похоже, либо не закончен, либо что-то пошло не так

Vadim
07.08.2017
09:38:31
В предыдушем деплое, было такое: 00:07 deploy:migrate [deploy:migrate] Run rake db:migrate 00:07 deploy:migrating 01 ~/.rvm/bin/rvm default do bundle exec rake db:migrate 01 WARNING: you don't own a lock of type ExclusiveLock ✔️ 01 deploy@xx.xxx.xxx.xxx 3.362s

Что в первом, что во втором деплое - новых файлов миграции не создавалось

Fedor
07.08.2017
09:41:26
скинь миграцию на гист

похоже на блокировку на уровне базы

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

Vadim
07.08.2017
09:43:10
я же и говорю, что миграции нет ) были внесены измения только в модели в обоих деплоях

Да, похоже на блокировку на уровне БД

Fedor
07.08.2017
09:44:03
эм...

так что тогда делает мигрэйт, если миграций нет?

он по идее должен сверять списко и если ничего нет, то ничего не делать

Google
Fedor
07.08.2017
09:44:42
или у вас schema_migration залочен на чтение????

Vadim
07.08.2017
09:45:42
капистрана при каждом деплое пишет ~/.rvm/bin/rvm default do bundle exec rake db:migrate Если миграций нет, то идет следующий этап, если есть - то запускается миграция

schema_migration не залочен для чтения

Fedor
07.08.2017
09:47:07
это она говорит о том, что использует гемы из бандла и руби дефолтный из rvm

просто сообщает о запуске команды

после чего происходит выполнение команды, в котором проверяется список микраций и если есть невыполненные, то прогоняются

Vadim
07.08.2017
09:47:53
это я понимаю )

Fedor
07.08.2017
09:48:16
попробуйте сделать rake db:migrate:status

Admin
ERROR: S client not available

Fedor
07.08.2017
09:48:18
на проде

Vadim
07.08.2017
09:48:20
сек

Fedor
07.08.2017
09:48:23
в production окружении

Vadim
07.08.2017
09:51:09
Блин, походу лок в БД по таймауту умер, сейчас деплой проходит и rake db:migrate:status на все миграции сейчас выдает UP

не каждый раз происходит этот лок, сейчас он ушел и все снова заработало, но переодически такая фигня вылезает

Alex
07.08.2017
10:18:09
Последний момент остался непонятный. Как при добавлении в избранное альбома, добавлять и все треки входящие в него? Так чтобы, в случае добавления новых треков в альбом, они тоже оказаывались в избранных пользователя?

Ребят, прошу помощи Есть 3 модели: Юзер, Альбом, Трек Юзер может добавить в избранное либо альбом целиком, либо треки по отдельности. Часть с альбомами сделал HABTM. А вот с треками не могу догадатся.

Fedor
07.08.2017
10:22:01
используй обзерверы

это что-то вроде колбэков, но не совсем

Fedor
07.08.2017
10:23:39
у тебя же нетривиальная логика, надо выпилить трек из избранного у пользователей, которые отцепили альбом, и добавить тем, которые наоборот подключили

Google
Fedor
07.08.2017
10:24:11
лучшее ее вытащить в обсервер

Alex
07.08.2017
10:24:33
Понял, пойду гуглить. Спасибо!

Fedor
07.08.2017
10:24:40
не за что

ojab
07.08.2017
10:29:52
А зачем тут городить нетривиальную логику и HABTM?

Fedor
07.08.2017
10:30:49
ну я так понял, что там пришли к решению цеплять к пользователю треки, причем желать это при подключении альбомов

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

ojab
07.08.2017
10:31:09
User has_many :albums, :tracks, все треки получать через условный tracks.or(Track.where(album: albums))

Fedor
07.08.2017
10:31:58
а что делать если трек исключается из альбома, или включается в другой альбом?

хотя я, возможно уже переусложняю, не знаю, какая там логика на самом деле есть )

ojab
07.08.2017
10:38:33
эм, на счёт has_many я затупил, да (в смысле album не belongs_to :user). Но получение треков от этого не меняется.

v
07.08.2017
11:14:46
@davydovanton тебе не кажется, что в шутках про RubyEE все меньше доля шутки?

Anton
07.08.2017
11:14:54
не

ну, если ты про контейнеры сейчас, то они реально работают

и они позволяют делать очень крутые штуки

об этом даже Jim Weirich писал, а это один из крутейших людей в руби комьюнити

Антон
07.08.2017
15:41:43
v
07.08.2017
15:43:02
? Размещение вакансий запрещено. Если хотите разместить вакансию - https://telegram.me/rubyjob

Denis
07.08.2017
20:58:28
Хочу переставать деплоить вручную. Держать отдельный докер контейнер для каждого приложения это нормально? Чтобы для дева и продакшене были разные набор конфигураций.

rekero
07.08.2017
21:00:47
Да

Jonas
07.08.2017
22:29:34
Я использую simple token authentication gem для аутентификации devise юзеров. Юзеры заходят с помощью username, которая имеет значение кириллицы. Когда я хочу удалить сессию я в http заголовках пишу токен и хедер 'X-User-Username' (как в доках гема): со значением username. Проблема в том что хедер не принимает кириллицу а латинницу принимает. Как сделать так чтобы он принимал хедер которая несет в себе значение кириллицой?

Страница 1161 из 1684