
Dmitry
25.08.2018
06:29:01
Я скучал по вам ребята

mike
25.08.2018
06:36:26
Хех, а бот молчит

O
25.08.2018
09:34:00

Tim
25.08.2018
14:38:17
Всем привет ) Вопрос:
почему убрали обсерверы из Rails 4? Сейчас доступны в виде гема. Кто-нибудь пользуется? По-моему это удобно

Google

Fedor
25.08.2018
16:08:38
Это те же колбеки только в профиль, лучше их не использовать
А то потом команда сменится и люди будут искать, почему данные при сохранении магическим образом меняются

Tim
25.08.2018
16:28:58

wi11son
25.08.2018
19:33:50

Антон
25.08.2018
20:07:22

Alexander
27.08.2018
06:43:48
Кто-нибудь использовал MQTT клиента в Rails приложении?

wi11son
27.08.2018
06:53:59
банни юзал

Alexander
27.08.2018
06:55:53
Я не пойму как его в продакшене использовать - как правильно добиться единственного инстанса клиента к серверу MQTT? Или это вообще надо как-то отдельно держать?

wi11son
27.08.2018
06:57:11
ты можешь инстанцировать эксченжи в инишалайзере
сделать обертку и потом клиентом говорить, в какую очередь стучаться
require "bunny"
# Start a communication session with RabbitMQ
conn = Bunny.new
conn.start
# open a channel
ch = conn.create_channel
# declare a queue
q = ch.queue("test1")

Google

wi11son
27.08.2018
06:58:30
это в инишалайзер
# publish a message to the default exchange which then gets routed to this queue
q.publish("Hello, everybody!")
это в сервисе, где ты сообщение шлёшь
если тебе нужно еще слушать очереди и что-то с этим делать, то лучше использовать sneakers
https://github.com/jondot/sneakers/

Alexander
27.08.2018
07:01:00
Спасибо, я понял. У меня как раз получаение нотификашек

wi11son
27.08.2018
07:01:05
ты будешь запускать на подобии sidekiq'a sneakers процесс, который так же будет вычитывать твой рубишный код, и будет подпиываться на очереди

Дмитрий
27.08.2018
09:08:45
Ребята, подскажите, нужен userstamp gem для 5-ых рельс. Не могу нагуглить ничего путёвого
т.е. к каждой модели нужно добавить поля created_by и updated_by

Egor
27.08.2018
09:37:54
Зачем гем? Сделай сам, решение выйдет более гибким и прозрачным

Дмитрий
27.08.2018
09:44:24

Pavel
28.08.2018
02:58:02
Используя Rails, что взять, чтобы избежать использования хелперов. Хорош ли cells от trailblaizer?
Использовал ли кто-нибудь dry-view для замены рельсовых вьюшек на вью-обжекты и темплейты

Максим
28.08.2018
07:28:47
пацаны по стилю в рельсах константы после инклудов или до?

Sergey
28.08.2018
07:43:20
лучше после
инклюды лучше всегда в самом начале держать

Максим
28.08.2018
07:43:54
сяп

focusshifter
28.08.2018
07:58:00
на простые вещи иногда тратишь в 3-5 раз больше времени, но усредненно получаешь приятное тестовое покрытие логики отображения

Anton
28.08.2018
08:12:21

Google

Egor
28.08.2018
08:46:56

Anton
28.08.2018
08:48:00
Почему?
Оно вряд ли заведётся + сырое + сейчас переделываем

Sergii
28.08.2018
09:20:26
Парни, вопрос. Возможно ли в одном квери использывать left_joins и rigth_joins?

Артур
28.08.2018
09:20:55
если ты знаешь что делаешь, то почему бы и нет =)

Darth
28.08.2018
09:22:16
Если один в другом, то да

Sergey
28.08.2018
11:31:06
Здравствуйте!
Как найти с наилучшим перфомансом предпоследнюю запись?
user.books.order('created_at DESC')[-2]
user.books.order('created_at DESC').limit(2)[-1]
последнее будет работать быстрее?
и как можно красивее написать?

trickster
28.08.2018
11:34:51
what about
.offset(2).limit(1)

Serhii
28.08.2018
11:39:19
.second_to_last

pny
28.08.2018
11:40:51
user.books.order('created_at ASC').offset(1).limit(1)

Артур
28.08.2018
11:41:24
оффсет и перфоманс часто превращаются в головную боль :)

Sergey
28.08.2018
11:41:28
У меня 4 рельсы :)

pny
28.08.2018
11:41:43
И чо?

Sergey
28.08.2018
11:42:11
Это по поводу second to last
Мне кажется менее затратно достать элемент уже в руби, чем добавлять офсет в sql?
Я просто не знаю что офсет накладывает на запрос
т.е. математически )

Serhii
28.08.2018
11:44:55
ну я бы наверное делал order(desc: ...).take(2).last хотя надо посмотреть еще во что оно приобразует запрос

pny
28.08.2018
11:45:46
Не хочется оффсет - user.books.order('created_at ASC').limit(2).last

Serhii
28.08.2018
11:46:26
или .last(2).first поидее одно и тоже

Sergey
28.08.2018
11:46:52
Не, ласт 2 будет медленно

Google

pny
28.08.2018
11:49:36
Даладно?
Когда limit стал медленным?

Sergey
28.08.2018
11:49:52
take 2 по сути тот же запрос что и limit 2, только преобразует в массив

Admin
ERROR: S client not available

Sergey
28.08.2018
11:50:53
Да я не тебе, а сергею. Что ты такой агрессивный

Serhii
28.08.2018
11:51:06
я вообще думаю ты сильно паришся по этому поводу. напиши просто last(2).first и не мучайся )

Sergey
28.08.2018
11:51:27
Не, у меня там много записей, будет ощутимо

Serhii
28.08.2018
11:51:36
если бы у тебя было действительно высоконагруженное приложение, то ты в этом чатике не спрашивал бы

pny
28.08.2018
11:51:54
last(2) это тот же лимит, но с переводом в массив же

Serhii
28.08.2018
11:52:16

Sergey
28.08.2018
11:52:38
Нет, в запросе ласта нет лимита
У меня много из этого примера книг

Serhii
28.08.2018
11:53:40
так в чем задача-то?

Sergey
28.08.2018
11:55:08
Ладно, я уже понял пока с вами общался как лучше. Спасибо :)

Serhii
28.08.2018
11:59:29
и как лучше?

pny
28.08.2018
11:59:33
кря

biert
28.08.2018
12:01:03
не могу понять как сделать relation, у меня есть модель Transaction в ней 2 поля seller_id и buyer_id в них записаны id которые должны быть в модели User, я хочу чтобы из transaction.seller или transaction.buyer были доступные обьекты User id которых записаны в поле

Serhii
28.08.2018
12:01:05
в чем кстати проблема оффсета? он разве тяжелый какойто?

biert
28.08.2018
12:01:29
вообще как натренировать себя в связях, а то путаюсь часто, официальная дока немного краткая чтобы вот такие вот случаи понять

ojab
28.08.2018
12:04:14
модель через class_name: 'User' можно задать

Google

ojab
28.08.2018
12:04:18
остальное как обычно

biert
28.08.2018
12:07:10
create_table "transactions", force: :cascade do |t|
t.integer "seller_id"
t.integer "buyer_id"
end
то есть в базе нету явно указаного что эти записи имеют связь с User, я так понимаю надо в миграцию добавить связь типо
add_foreign_key :transactions, :users, column: :seller_id, primary_key: :id
add_foreign_key :transactions, :users, column: :buyer_id, primary_key: :id

ojab
28.08.2018
12:08:46
или foreign_key { to_table: :users }

biert
28.08.2018
12:08:48
has_one :buyer, class_name: "User", foreign_key: "id"
нужно было наверное

ojab
28.08.2018
12:08:54
в t.belongs_to

biert
28.08.2018
12:40:40
наконец-то разобрался, можно было обойтись без миграции, нужно было дать еще primary_key кроме foreign

Иван
28.08.2018
12:58:45


Aleksey
28.08.2018
14:34:55
народ, задачка на подумать, звучит как что-то что уже обсасывалось, а может и нет…
Есть массив объектов с двумя полями: price и max_items. Поле price - просто цена товара. Поле max_items говорит о том, сколько товаров включая этот можно положить в одну корзину. Например, если max_items == 1, то этот товар может быть в корзине только один. Если max_items == 2 - то если в корзине лежит такой товар, к нему можно положить еще один.
Задача: найти в заданом массиве комбинацию из (up to 3) элементов, сумма цен которых будет максимально возможной. Например, это может быть один элемент { price: 9999, max_items: 1 }, или два элемента [{ price: 5000, max_items: 3 }, { price: 5000, max_items: 2 }], или три.
Из того что мне приходит в голову - в лоб - перебирать от 3 до 1 все возможные комбинации, и брать max из этого. Но может есть более элегантные решения


No
28.08.2018
14:39:37
Есть
Смотри, делаешь массив всех возможных айтемов. Допустим есть price 5000 и максимум 2 айтема. Значит пихаешь его два раза
После сортируешь в обратном порядке
Берешь первые три