
Aleksey
26.05.2017
15:25:39
https://ruby-doc.org/core-2.4.1/Kernel.html#method-i-test

Василий
26.05.2017
15:26:47
o.private_methods.include? :test => true

Vasiliy
26.05.2017
15:28:25
безопаснее же юзать public_send

Eugene
26.05.2017
15:29:39

Google

Denis
26.05.2017
15:36:05

Артур
26.05.2017
15:36:54
че по типам полей?

Denis
26.05.2017
15:37:26
Какаю именно миграцию сбросить?

Vasiliy
26.05.2017
15:38:13
у тебя PG на русском пишет?
rails db:rollback

Denis
26.05.2017
15:38:59
По всей видимости

Aleksey
26.05.2017
15:40:28
По-русски это мощно, гуглить особенно удобно

Denis
26.05.2017
15:40:49
Ничего нагуглить не смог

ojab
26.05.2017
15:42:16
ну и очевидно что types_technologies.name у тебя String/varchar, а types_technologies.id (который ты subselect'ишь) — int
и pg не может искать varchar в результате subselect'a

Denis
26.05.2017
15:43:51
https://gist.github.com/denisoster/6a11963a8dd49b065c014a9cfaf24160
Мой запрос неверный?

Google

ojab
26.05.2017
15:45:26
смотря что ты хотел сделать в запросе

Denis
26.05.2017
15:45:47
def search_catalogs(params)
search_types_technology = TypesTechnology.where(name: types_technologies)
search_model = Model.where(model_id: search_types_technology.select(:id))
search_brand = Brand.where(id: search_model.select(:brand_id))
end

ojab
26.05.2017
15:45:59
оуч
меняй collect'ы на .select(:whatever) для начала

Denis
26.05.2017
15:47:15
так? я отредактировал сообщение

ojab
26.05.2017
15:47:24
потому что каждый collect достаёт данные из БД на уровень приложения и делает ещё один sql-запрос, с select'ами это всё выполнится одним sql-запросом
нет, не так

Denis
26.05.2017
15:48:43
А как верно?

ojab
26.05.2017
15:49:13
или почитать документацию, или более внимательно сравнить моё сообщение с тем, что у тебя написано
ну и непонятно откуда у тебя types_technologies в методе берётся. Прозреваю что там у тебя что-то в духе TypeTechnology.where(x: y).select(:id) и как раз в этом проблема.

Denis
26.05.2017
15:54:52
да так и есть
Не могу понять почему этот не работает если анологичй работает. хоть да он использует collect что не верно
unless types_technologies==[] or types_technologies==[""]
search_good = Good.where(
id: ModelsGood.where(
model_id: Model.where(
types_technology_id: TypesTechnology.where(
name: types_technologies
).collect(&:id)
).collect(&:id)
).collect(&:good_id)
)
end

Василий
26.05.2017
16:10:58
select(:id) => .ids
select(:brand_id) => pluck(:brand_id)
Попробуй

ojab
26.05.2017
16:12:27
зачем?
падает раньше

Akamit
26.05.2017
17:49:27
подскажите пожалуйста как можно сделать truncate модели?
я бы сделал через ActiveRecord::Base.connection.execute("TRUNCATE xxxx"),
но у меня такая модель:
class Card < ActiveRecord::Base
establish_connection adapter: "mysql2",
database: "baikal",
username: "baikal",
password: "baikal"
end

ojab
26.05.2017
17:52:49
Card.connection.execute

Google

Akamit
26.05.2017
18:57:44

Nikita
27.05.2017
12:15:47
ребят, кто с сайдкиком плотно работал, какое значение concurrency максимальное вы использовали?
Don't set the concurrency higher than 50. I've seen stability issues with concurrency of 100, for example.
кто-то пробовал более 50?

ojab
27.05.2017
12:23:27
но зачем?
очевидно что кто-то пробовал, если об этом пишут

Igor
27.05.2017
12:25:49
Те если у тебя 24 ядра
То смело ставь 48 :)

Nikita
27.05.2017
12:26:38
ну это все понятно, но если я правильно понял, то concurrency ограничивает кол-во одновременно выполняемых воркеров, верно?

Igor
27.05.2017
12:26:57

Nikita
27.05.2017
12:27:11
а кол-во одновременно выполняемых воркеров как настраивается?

Igor
27.05.2017
12:27:59

Nikita
27.05.2017
12:28:07
ну джоб, точнее

Igor
27.05.2017
12:28:11
Кол-во процессов штоле?

Nikita
27.05.2017
12:28:15
да

Igor
27.05.2017
12:29:05
Не очень понятно зачем это для сайдкика
Вроде эта фича есть только в сайдкик про
Не очень прнятно чего ты хочешь добиться
У меня дикий опохмел, поэтому могу туго соображать :)

Google

Nikita
27.05.2017
12:30:54
ну суть в том, что допустим есть джоб штук 100, 1 джоба выполняется не быстро, скажем 20 минут, но суть в том, что джобы для 1 пользователя работают синхронно, а между пользователями асинхронно, вот поэтому и спрашиваю
сама по себе джоба будет работать с файлами и API

Igor
27.05.2017
12:32:33
Свой queue

Nikita
27.05.2017
12:32:43
я так и делаю
на queue ставлю .limit

Igor
27.05.2017
12:33:04
А дальше будет гемморой

Nikita
27.05.2017
12:33:07
посредством sidekiq-limit_fetch
ну я так понимаю, что в sidekiq 1 джоба делается в 1 поток?

Admin
ERROR: S client not available

Nikita
27.05.2017
12:48:51
ну да, я поставил :concurrency: 20, создал 25 джоб, но выполняются активно только 20

ojab
27.05.2017
13:38:00
если одна джоба выполняется 20 минут — надо что-то делать с джобой

Igor
27.05.2017
13:38:34

Nikita
27.05.2017
13:39:24
да, спасибо

ojab
27.05.2017
13:44:32
и что решили?

Igor
27.05.2017
13:46:43

Neekoso
27.05.2017
14:56:26
Сайдкик - нативное расширение?

ojab
27.05.2017
14:57:53
google://sidekiq

Neekoso
27.05.2017
15:11:55
Или я совсем плохо искал, или у них на гите ни слова про native extensions, разве что фраза "sidekiq workers are sent to a multithreaded process".
+ одни .rb файлы в lib/

Google

v
27.05.2017
15:17:53
вот и ответ

Neekoso
27.05.2017
15:19:18
Тогда при чем тут количество ядер * 2 при расчете оптимального количества задач, если руби на одном ядре исполняется?

Артур
27.05.2017
15:20:33
друзья, коллега собирается брать для ruby/rails разработки макбук 13 2015, там-ж двуядерный проц и 8 гб рам
есть у кого опыт работы за таким железом? отговаривать или нет?

v
27.05.2017
15:21:17

Igor
27.05.2017
15:21:36

v
27.05.2017
15:22:00

Neekoso
27.05.2017
15:30:11
Неоднократно читал, что в MRI нет реального параллелизма, не понимаю к чему такая реакция

v
27.05.2017
15:32:44
угадай, на скольки ядрах он исполняется?

ojab
27.05.2017
15:36:59

Neekoso
27.05.2017
15:37:44

ojab
27.05.2017
15:38:07
mkay, это никак не уточнило утверждение.
делаешь 4 треда @ прибиваешь каждый к своемус ядру. 4 треда параллельно выполняются на 4 ядрах.

Neekoso
27.05.2017
15:39:48
"Прибиваешь каждый к своему ядру" в MRI?

ojab
27.05.2017
15:40:12
да
современные операционные системы позволяют прибивать треды к ядрам вне зависимости от процесса эти треды породившего

Neekoso
27.05.2017
15:41:00

ojab
27.05.2017
15:46:18
google://MRI+GIL
и читай в каких случаях GIL действительно мешает выполнению
(в много потоков)
в реальности это непрерывные вычисления в много потоков, чем на ruby вряд ли стоит заниматься (ибо медленно безотносительно многопоточности)