@proRuby

Страница 1352 из 1594
Alexander
13.08.2018
16:26:25
def find return @record if @record return nil if @success == false @record ||= MongoDB.find (id)# дергаешь базу rescue MongoDBError @success = false nil end
зачем тебе столько лишних переменных? покажи пример использования find

Google
Tim
13.08.2018
16:27:09
условно

переменные для идемпотентности операции

потому что запросы к бд это дорого

Alexander
13.08.2018
16:32:00
лучше сделать просто типа class Find atrr :id def call MongoDB.find (id) rescue MongoDBError nil end end res = Find.new(id: 123).call

Tim
13.08.2018
16:33:26
ну можно и так

но смысла от такого класса мало

можно так и статическим методом тоже

ну и моя хуйня не позволит нескольуо оаз к базе случайно обратиться

и ее всегда можно спросить какая именно была ошибка

Alexander
13.08.2018
16:35:17
слишком много кода и переменных, чтобы решить такую проблему. когда можно просто один раз сохранить результат и дальше с ним работать

Alexander
13.08.2018
16:44:53
ну ты результат вовне хранишь
ну а зачем его хранить внутри?

Google
Tim
13.08.2018
16:45:14
ты же наверняка знаешь что бывает когда зажевываешь эксепшены

ну а зачем его хранить внутри?
чтобы при повторном вызове вернуть

Alexander
13.08.2018
16:47:06
https://youtu.be/rI8tNMsozo0

Tim
13.08.2018
16:52:12
ну мб ты прав

Anton
13.08.2018
17:17:27
https://youtu.be/rI8tNMsozo0
о, рич подъехал

Nikita
13.08.2018
18:52:52
переменные для идемпотентности операции
о какой идемпотентости может идти речь если ты работаешь с базой, сейчас у тебя есть значение, через пять секунд у тебя базу дропнули и ничего не работает

Damir
13.08.2018
19:25:08
А что стало с rubyjobs.ru?

Tim
13.08.2018
19:37:31
хочешь еще раз поискать – создавай новый инстанс

у этого результат такой

Nikita
13.08.2018
19:39:03
Это уже не идемпотентностб а побочный эффект, потому что ты знаешь что внутри у тебя есть мемоизация, снаружи об это никто не знает

Tim
13.08.2018
19:40:10
одно другому не мешает

Dm
13.08.2018
19:54:02
Damir
13.08.2018
19:55:22
РКН 36484 чтоле?

да, с впн и правда работает

Работает
Благодарочка

Amir
14.08.2018
06:27:31
Ребята помогите плиз Есть некая функция с параметрами, скажем def my_method(a, b, c, d) его надо вызвать но у меня парметры хранятся в хеше params = { a: 1, b: 2, c: 3, d: 4 } как мне подсунуть эти парметры к методу?

rekero
14.08.2018
06:28:35
my_method(*params)

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

типа *params.values или сам params

Google
Amir
14.08.2018
06:31:55
my_method(*params)
этот метод к сожалению нельзя менять

rekero
14.08.2018
06:33:42
причем здесь метод

Amir
14.08.2018
06:33:46
у меня как бы это, мета программирование на самом деле передается имя функции и его параметры, строго по порядку как требуется

Nikita
14.08.2018
06:33:53
в вызов нужно передать спрэд массив

my_method(*params.values)

Amir
14.08.2018
06:34:40
my_method(*params.values)
ухты спс работает :)

kolas
14.08.2018
06:34:48
лучше не колдовать и руками вызвать param[:a], params[:b] etc

rekero
14.08.2018
06:34:56
типа *params.values или сам params
ну я это типа и написал

Amir
14.08.2018
06:35:08
ну я это типа и написал
ага, не догнал я чуток :)

спс всем

Nikita
14.08.2018
06:35:15
причем здесь колдоство, обычный спрэд оператор

Amir
14.08.2018
06:36:06
лучше не колдовать и руками вызвать param[:a], params[:b] etc
нет, у меня универсальный фукнция который принимает первым параметром имя фукнции, втором в хеше его параметры, строго по порядку

Subb98
14.08.2018
06:36:54
kolas
14.08.2018
06:38:40
hash не гранатирует порядок

если там будет {b:1, a:2, c:3}

все сломается

Tim
14.08.2018
06:40:53
а то

kolas
14.08.2018
06:40:58
{b:2, a:1} == {a:1, b:2}

Tim
14.08.2018
06:40:59
я бы не стал уповать на порядок в хэше

Google
Tim
14.08.2018
06:41:08
ну то есть вообще никак

kolas
14.08.2018
06:41:31
{b:2, a:1}.values != {a:1, b:2}.values

Tim
14.08.2018
06:42:01
{b:2, a:1}.values == {a:2, b:1}.values

Admin
ERROR: S client not available

Nikita
14.08.2018
07:05:01
Two hashes with the same key/value pairs will be equal regardless of key order.

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

Roman
14.08.2018
07:13:28
hash не гранатирует порядок
еще как гарантирует. начиная с 1.9 вроде

kolas
14.08.2018
07:14:17
так он порядок итерации просто гарантирует, а в каком порядке ключи придут кто знает?

как база отдаст или как фронт отдаст

сегодня так, завтра по другому

Roman
14.08.2018
07:15:47
а, в этом смысле да

Subb98
14.08.2018
08:37:08
ну, потому что проверяется текущий токен, который не соответствует. как вариант, перед запросом авторизовывать клиент на проде.

или просто подставить валидный токен в запрос (в сессию?). я не помню, куда он добавляется. вроде, в сессии хранится.

прикол ещё в том, что на каждый запрос генерится новый токен, обычно.

так что смотрите реквесты сперва в инструментах разработчика.

без понятия, как это в рельсах устроено и какой конкретно у вас механизм для этого. я не смотрел.

чисто общей инфой поделился.

может быть, как раз в куках и лежит текущий токен. я бы на вашем месте отправил пару запросов из браузера и всё прочекал через него же.

это для начала.

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

Google
Subb98
14.08.2018
08:42:14
и уже бы что-то предполагал дальше.

Roman
14.08.2018
08:44:35
Всем привет, а concurrency в sidekiq конфиге - это сколько может выполняться джобов параллельно в контексте очереди?

Amir
14.08.2018
08:49:31
Ребята у мя такого кода дофига def self.get_file_list ¦ conditions = [] ¦ columnSet = [] ¦ limit = 10 ¦ query = DMObjectListQuery.new(conditions, limit, columnSet) ¦ type = 'DMFile' ¦ result = call('DMGetObjectListRequest', type, query) rescue DMServiceError => e ¦ logger.error e.obj.subject ¦ logger.error e.obj.description rescue Exception => e ¦ logger.error e.message ensure ¦ result = [] if result.nil? ¦ result end Как то можно эти самые обработчики ошибок унифицировать? на каждом методе они одинаковые

перехватить raise может както

wi11son
14.08.2018
08:52:43
def self.get_file_list handle_exception do conditions = [] columnSet = [] limit = 10 query = DMObjectListQuery.new(conditions, limit, columnSet) type = 'DMFile' call('DMGetObjectListRequest', type, query) end end def self.handle_exception result = yield if block_given? rescue DMServiceError => e logger.error e.obj.subject logger.error e.obj.description rescue Exception => e logger.error e.message ensure result = [] if result.nil? result end

что-то типа такого

wi11son
14.08.2018
08:54:20
rescue Exception => e — вот это кстати плохая практика

нужно перехватывать только те ошибки, которые ты ожидаешь

а не всё ваще

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

Tim
14.08.2018
09:00:34
это супер плохая практика

потому что системные эксепшены тоже ловит

Страница 1352 из 1594