
Tim
13.08.2018
16:23:54

Alexander
13.08.2018
16:26:25

Tim
13.08.2018
16:26:38

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
слишком много кода и переменных, чтобы решить такую проблему. когда можно просто один раз сохранить результат и дальше с ним работать

Tim
13.08.2018
16:44:26
и ошибка неизвестна

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

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

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

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

rekero
14.08.2018
06:34:56

Amir
14.08.2018
06:35:08
спс всем

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

Amir
14.08.2018
06:36:06

Amir
14.08.2018
06:36:39

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

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
что-то типа такого

Amir
14.08.2018
08:53:43

wi11son
14.08.2018
08:54:20
rescue Exception => e — вот это кстати плохая практика
нужно перехватывать только те ошибки, которые ты ожидаешь
а не всё ваще
ато у тебя и логика работать не будет, и знать почему ты не будешь

Tim
14.08.2018
09:00:34
это супер плохая практика
потому что системные эксепшены тоже ловит