
Nikolay
02.12.2017
11:20:06
На хероку нельзя загружать файлы
Облака юзать надо

Roman
02.12.2017
11:31:03
Да, уже понял, спасибо

Konstantin
02.12.2017
11:44:35
Ребят, посоветуйте, что можно использовать: я хотел по расписанию (каждые n-часов) запускать worker (sidekiq) я так понял такая фича есть только в самой дорогой версии sidekiq, есть ли что-то бесплатное?

Google

Fedor
02.12.2017
11:45:01
cron

Konstantin
02.12.2017
11:46:37
cron
Это будет работать с sidekiq или надо бэкэнд для задач менять?

Vitaliy
02.12.2017
11:47:01
Будет работать с сайдкиком

Konstantin
02.12.2017
11:47:11
Спс

Fedor
02.12.2017
11:48:29
есть гем whenewer которые реализует хрон в руби

Vitaliy
02.12.2017
11:48:34
Вообще для крона я rake-таски завожу. А внутри можно уже что угодно дергать, и воркеры, и сервис-обжекты, и просто модели, а код весь хранить в rake-таске

Fedor
02.12.2017
11:48:42
полняет любой руби код по расписанию, хоть с сайдкиком, хоть без

Vitaliy
02.12.2017
11:49:09
Плюсую за whenever, тоже использую

Fedor
02.12.2017
11:49:13
и есть просто линуксовый cron который вполняет консольные команды в linux, ты туда можешь засунуть rake do:task по расписанию и все

Vitaliy
02.12.2017
11:49:19

Konstantin
02.12.2017
11:54:32
Ща попробуем)

Mega
02.12.2017
15:49:58
Всем привет!
Правильно ли. я понял что в 5 версии Rails нужно использовать в модели запись такого вида:
class Tweet < ApplicationRecord
end
вместо
class Tweet < ActiveRecord::Base
end

Dmitry
02.12.2017
15:51:14
ну сделай rails g model trololo

Google

Dmitry
02.12.2017
15:51:21
и посмотри что он тебе сгенерирует)
у нас в приложении на 5 рельсах есть вот такая вот штука
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
это application_record.rb
все остальные модели
class Order < ApplicationRecord

Mega
02.12.2017
16:17:36
Пишут что этот файл # app/models/application_record.rb будет автоматически добавлен к модели в Rails 5. Получается ничего писать не нужно
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

Dmitry
02.12.2017
16:28:55
Ты очень странно выразился, когда ты делаешь rails new appname
Этот файл создаётся в папке с моделями
Остальные модели наследуются от ApplicationRecord
Но если их создавать генератором, то писать ничего действительно не нужно.

Di
02.12.2017
19:08:40
Ребят, подскажите. Есть мейлер, он отправляет письмо и при успешной отправке он должен записывать время последней отправки этому адресату. Вроде напрашивается коллбек в мейлере, но слышал от старшего товарища что это нехорошо, типа это не ответственность мейлера. Прав ли он? В гугле примеров что-то не найду, как лучше сделать.


Ro
02.12.2017
22:40:52
да, просто в Rails 5 они сделали ApplicationRecord, который наследуется от ActiveRecord::Base. Смысл был в том, чтобы ты мог бы добавлять что-то в свои модели, и чтобы это распространялось на все модели. Т.е. больше для удобства.
я себе добавил туда метод update_with_context, которого нет в рельсах
вот как выглядит:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
# Update attributes with validation context.
# In Rails you can provide a context while you save, for example: `.save(:step1)`, but no way to
# provide a context while you update. This method just adds the way to update with validation
# context.
#
# @param [Hash] attributes to assign
# @param [Symbol] validation context
def update_with_context(attributes, context)
with_transaction_returning_status do
assign_attributes(attributes)
save(context: context)
end
end
end

Dmitry
02.12.2017
23:16:51

Ro
03.12.2017
00:07:13
если это User, то можно сделать например user.update(sent_at: DateTime.now) - проблем не вижу
а товарищу скажи KISS
что означает Keep It Simple Stupid ?

Google

Александр
03.12.2017
07:28:56
keep it short and simple

Dmitry
03.12.2017
11:09:51
сделал rake таск который с сайта цб берет курс евро в wheneven сделал
every 1.day, at: '5:30 am' do
rake "rate:update_daily_rate"
end
он мне сгенерировал
# Begin Whenever generated tasks for: /home/d/dmitryd8/lemans-france.ru/config/schedule.rb
30 5 * * * /bin/bash -l -c 'cd /home/d/dmitryd8/lemans-france.ru && RAILS_ENV=production bundle exec rake rate:update_daily_rate —silent » log/whenever.log 2>&1'
# End Whenever generated tasks for: /home/d/dmitryd8/lemans-france.ru/config/schedule.rb
и это не работало потому что это в докере нужно еще версию руби выбирать
я сделал
30 5 * * * /bin/bash -l -c 'cd /home/d/dmitryd8/lemans-france.ru && chruby ruby-2.3 && RAILS_ENV=production bundle exec rake rate:update_daily_rate --silent >> log/whenever.log 2>&1'
т.е. тупо в crontab -e вставил после перехода в папку && chruby ruby-2.3
как то можно просто в schedule.rb это сделать

Vitaliy
03.12.2017
11:14:39
Можно по тикетам в whenever гитхабе поискать
docker и ruby version

Dmitry
03.12.2017
11:15:06
все к слову заработало когда ручками поправил

Dmitry
03.12.2017
11:15:29
вот думаю гем только когда запускаешь whenever —update-crontab
апдейтит cron
если он сам мне его не обновит как нибудь то проблемы в общем то и нет.

Vitaliy
03.12.2017
11:16:58
Из капистраны тогда убрать его нужно
т.к. он при деплое вроде это делает одним из шагов

Dmitry
03.12.2017
11:18:20
++

Andrey
03.12.2017
12:39:04
По идее надо докер править. Чтобы версию не выбирать.
Ставить руби не через rbenv rvm и тд

Google

Dmitry
03.12.2017
13:02:31
у меня только внутри докера доступ, так что не могу я этого сделать

George
03.12.2017
15:40:28
Что-то туплю, подскажите, есть две модели Юзер и Мероприятие. Между ними связь многие ко многим. А как бы мне определять юзера, который создал мероприятие?

Fedor
03.12.2017
15:43:20
иначе никак
потому что какой-нибудь users.first не подойдет
там будет сортировка по id

Igor
03.12.2017
15:45:23
https://pastebin.com/TBscZ7aC
https://pastebin.com/uSUygDZy
взял декодер в который отлично работал в консоли винды 7

Admin
ERROR: S client not available

Igor
03.12.2017
15:46:24
теперь пытаюсь с ним работать в руби майн
и он выдает следующую ошибку
может кто подскажет как в декодере учесть кодировку сз866
все файлы в utf-8

George
03.12.2017
16:13:22

Ilya
03.12.2017
16:15:40
ахахахах, сижу читаю этот чат, и постоянно дежавю какое-то, кажется что раньше видел. А потом смотрю, сообщения за май. Как я туда попал — хз, но минут 15 потратил в попытках дойти до непрочитанных сообщений ?

Di
03.12.2017
17:34:15

Ro
03.12.2017
17:35:33
ну на товарища обижаться не стоит, он наверное начитался умной литературы, но реального опыта не особо хватило чтобы подкрепить теорию)

Fedor
03.12.2017
17:36:44
это нормально, потому что на больших и сложных проектах за колбэками сложно следить, но чаще всего колбэки вполне норм

Google

Fedor
03.12.2017
17:37:36
так же есть аллергия на AR, когда сложно следить за связями между моделями, и все связи удаляются и заменяются на скоупы )
это уже ближе к клинике
а вообще, что бы не было колбэков пишется класс - service_object, который занимается отправкой. И вместо вызова метода send_mail создается инстанс этого класса и вызывается perform
а внутри него уже все эти действия реализованы
тогда все лежит и управляется в одном месте

Di
03.12.2017
17:39:18
Есть люди у которых аллергия на колюэки
Ну я не предлагал прям вот в колбеках, можно же просто в коде. Вопрос в том что я сначала сделал аптейдт атрибута последней отправке в самой джобе, мне сказали что плохо, я предложил в мейлере апдейтить атрибут, тоже нехорошо. Вот я и завис вообще.
Мне же надо еще предусмотреть вдруг в мейлере ошибка возникла, значит атрибут не менять, письмо ж не отправилось.

Fedor
03.12.2017
17:40:24
SendMailService.new(from: user1, to: user2, subject: subject, text: text).perform
или perform_delayed
и все, что надо сделать в тразакциях, ифах и прочем внутри этого класса
ну и SendMailService - это не магия какая-то из глубин рельсы, а класс, который надо самому написать )

Alex
03.12.2017
17:43:18
ИМХО, в моделях где не более 100 строк это все глубоко не обязательно )

Di
03.12.2017
17:46:49

Fedor
03.12.2017
17:47:07
потому что это не задача мэйлера )
чисто архитектурна яфишка
потому что потом у тебя отвалится SMTP сервер, ты будешь это дебажить и испоганишь базу, потому что окажется что при отправке мэйле в колбэках обновляются пользователи, создаются заказы, проводятся оплаты и.т.д.
и если ты сам это не наговнокодил, то ты этого не знаешь )
а узнаешь когда оно уже свершилось и уже все плохо

Di
03.12.2017
17:55:57
О, мудрый комент, спасибо, как то в голову не пришло. Спасиб!

O
03.12.2017
18:09:56
А норма ли такое ?
Смотрю на строку аж страшно становится

Fedor
03.12.2017
18:10:30
нет, так никто не делает