
Anton
31.08.2018
00:00:32
Но в бэкграунде этого не будет
Тут стоит создать очередь для таких важных задаст и копать в это

Богдан
31.08.2018
08:03:43
господа, а как через rails new создать приложение с нужной версией рельсы?

Google

Vitaliy
31.08.2018
08:06:20

Богдан
31.08.2018
08:06:58

Aleksey
31.08.2018
08:07:28
создать новый гемсет (или через Gemfile), туда поставить нужную версию рельс, и оттуда уже сделать rails new
самому интересно есть ли более адекватное решение )

Vitaliy
31.08.2018
08:08:15

Maksim
31.08.2018
08:08:53
https://stackoverflow.com/a/452458 / нет?

Богдан
31.08.2018
08:09:54
сенкс, сейчас попробую
может кто-то подскажет, а то я вообще уже запарился с этой новой рельсой?
https://toster.ru/q/558984?utm_source=email_notifications&utm_medium=email&utm_content=comment_q&utm_campaign=notifications#clarification_596002

Igor
31.08.2018
08:13:35
А без докера то работает? Может не в докере беда

Богдан
31.08.2018
08:16:06
а тут получается что горячие изминения не применяются, может здесь есть те, кто юзает докер в разработке и последнюю рельсу?
у меня было пожозрение на spring, у уже его и удалял и устанавливал, пересоздавал проект, но так и не заработало горячее изминение

Google

Богдан
31.08.2018
09:27:38
все из-за гема listen, но как эго отключить, если просто в удалить из Gemfile, тогда пишет что
| /app/gems/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile (LoadError)

Sergey
31.08.2018
09:35:35
Всем привет, как строку 'hh:min::sec' превратить в секунды? Например: "00:01:02.533065 == 62

Fedor
31.08.2018
09:42:25
по хорошему надо парсить строку, делить по символам и умножать часы на минуты и секунды
но можно и извратиться
Time.parse('00:01:02.533065') - Time.current.beginning_of_day
62.533065

rekero
31.08.2018
09:43:21

Fedor
31.08.2018
09:43:39
то оно в
этот формат не влезет

Sergey
31.08.2018
09:43:43
вот все что пришло в голову, как раз то что ты сказал сначала, сплит по : и далее умножение
это топорно и прямо, хотел что-то красивее найти
а по поводу parse: @rekero заметил правильно. Все, что больше 24 - сразу гемор

Fedor
31.08.2018
09:45:02
ну Time - это объект с датой, по факту количество секунд от начала 1970 года, тебе нужен период, тоесть это либо разность объектов типа Time либо писать свой класс - период
либо сплитить и умножать

Sergey
31.08.2018
09:45:32
сплитить пока выглядит самой здравой идеей

Ilya
31.08.2018
09:45:49
да распарсь строку. порой топорное решение - лучшее
к тому же, если что-то лаконичное найдешь то с вероятностью 90% под капотом тот же парсер

Fedor
31.08.2018
09:46:13
вообще да

Sergey
31.08.2018
10:21:17
спасибо, ребят)

Silent Bob
31.08.2018
11:19:00
модель Post hash many tags. Как выбрать посты where у которых определенное количество тегов, к примеру два? (Active Record)

Иван
31.08.2018
11:38:31

Google

Sergii
31.08.2018
11:56:32
а counter_cache есть?
если есть ,то можно Post.where('tags_count = 2') ^)^
А так-то как Иван написал должно работать.

Silent Bob
31.08.2018
12:50:41

Антон
31.08.2018
12:52:59

Богдан
31.08.2018
12:57:21
Господа, а не подскажите, куда писать опции в этом геме 'listen'?https://github.com/guard/listen#options

Максим
31.08.2018
12:57:56
>All the following options can be set through the Listen.to after the directory path(s) params.
что из этого не понятно?
не наезд просто вопрос

Богдан
31.08.2018
13:00:58
уже всю доку обшарил, непонятно ни как его выпилить, ни куда писать Listen.to

Богдан
31.08.2018
13:04:08
от него можно избваиться только при создании проэкта --skip-active-record
но как бы это не вариант, AR нужен

Sergii
31.08.2018
13:39:23
options[:categories].split(',').inject({}){ |_h, x| b = x.split('_'); _h[b.last.to_i] ||= []; _h[b.last.to_i] << b.first.to_i; _h}
=> {242068=>[118], 242201=>[653, 652]}
красивее можно сделаеть?
Приезжает такое, "118_242068,653_242201,652_242201"

Максим
31.08.2018
13:40:47
сделать что

Sergii
31.08.2018
13:41:38
"118_242068,653_242201,652_242201" преобразовать в {242068=>[118], 242201=>[653, 652]}

Artem
31.08.2018
13:49:25
в рельсе можно так "118_242068,653_242201,652_242201".split(',').map { |el| el.split('_').map(&:to_i) }.group_by(&:last).transform_values(&:flatten)

Sergii
31.08.2018
13:51:03
.split(',').map{|x| [x.split('_').map(&:to_i).reverse].to_h }.reduce({}, :merge) - недопилил еще блок для мержа

Google

Sergii
31.08.2018
13:51:15
почти так же

Artem
31.08.2018
13:53:47
ага, у меня еще и не совсем верно работает) твой 2й вариант ?
думаю еще через регулярки можно, но не факт что читабельнее будет

Sergii
31.08.2018
13:55:53
.split(',').map{|x| x.split('_').map(&:to_i).reverse}.inject({}){ |_h, p| p p;_h[p[0]] ||= []; _h[p[0]] << p[1]; _h }
работает, но тоже параход ?

Dmitry
31.08.2018
13:56:09
какой ад

Admin
ERROR: S client not available

Sergii
31.08.2018
13:56:27
p p; лишнее

Denis
31.08.2018
14:33:23
let(:instance_object) { create(instance_object_name_sym) }
context '#name' do
let!(:name_en) { create(:name, nameable: instance_object, body: 'Custom Text First') }
let!(:name_ru) { create(:name, nameable: instance_object, body: 'Ru Name', language: 'ru') }
it 'return body of name for passed language' do
instance_object.names.reload
Почему надо делать тут names.reload? Каким образом здесь names грузится до того, как был сделан первый вызов к ним?

Иван
31.08.2018
14:48:49
работает, но тоже параход ?
можно еще так - split(",").map { |e| e.split("_") }.each_with_object(Hash.new { |h, k| h[k] = [] }) { |(v, k), h| h[k] << v } Если вынести Hash.new { |h, k| h[k] = [] } куда ниубдь повыше, то даже не очень страшно выглядит

Aleksey
31.08.2018
14:59:31
а чо там дальше по тесту?


Denis
31.08.2018
15:00:45
Оно по идее просто дергает instance_object чтобы достать его ID, names не вызывается. Дальше создается запись в БД в таблицы names.
Т.к. я полагаю что lnstance_object.names должен вернуть в тесте массив из двух элементов, но он возращает пустой массив если не сделать reload перед вызовом
Суть проблемы в том что я был уверен что здесь не нужен reload, но без него тест не проходит (тест проверяет что массив не пустой)
Видимо все-таки подгрузка ассоциаций происходит во время создания объекта, а не во время обращения
[21] pry(main)> i = Industry.create!
[22] pry(main)> n = Name.create!(nameable_type: i.class.name, nameable_id: i.id, body: 'Hello', language: 'en')
[23] pry(main)> i.names
=> []
[24] pry(main)> i.reload
[25] pry(main)> i.names
=> [#<Name id: 23227, nameable_id: 13, nameable_type: "Industry", body: "Hello", language: "en", created_at: "2018-08-31 15:09:01", updated_at: "2018-08-31 15:09:01">]
[26] pry(main)>


Roman
31.08.2018
15:45:41
Всем привет. А pool в database.yml для всего приложения или, например, для каждого форка юникорна?

ojab
31.08.2018
16:01:27
для каждого форка

Roman
31.08.2018
16:02:09
то есть, если я запустил 100 форков и пулл 10, то в пг будет открыт 1000 конекшен пул?

ojab
31.08.2018
16:13:25
ага

Google

Roman
31.08.2018
16:19:39
спасибо!

Богдан
31.08.2018
18:47:41
Господа, посоветуйте что лучше использовать для валидации в контроллере?

Darth
31.08.2018
18:52:30
Валидации чего?

Богдан
31.08.2018
18:54:07

Darth
31.08.2018
18:54:45
Если это параметры для модели, то в модели
Перед этим стронг парамс
Вроде всё стандартно

Богдан
31.08.2018
18:56:02

Darth
31.08.2018
18:56:19
Сделай валидацию в другом месте
Форм обжект
Но форм обжекты используются для кастомных валидаций или для использования нескольких из них, т.е. случаев когда запуск всех валидаций в модели не подходит, а нужные тебе валидации где-то ты не хочешь ставить в модель

Богдан
31.08.2018
19:07:55

Антон
31.08.2018
19:22:56
когда это успело стать антипаттерном, я пропустил что-то?

Nikita
31.08.2018
19:25:55

Aleksey
31.08.2018
19:33:44

Vitaliy
31.08.2018
19:56:36

Антон
31.08.2018
20:32:54