Мы планируем перейти с delayed_job на resque для нашего сайта, и одно из предостережений, которые я вижу повсюду, заключается в том, что, хотя delayed_job использовал yaml для сериализации, resque использует json, и из-за этого к хеш-ключам и т. д., которые являются символами, необходимо обращаться как к строкам, поскольку символы не могут быть сохранены в json (например, источник).

Мой вопрос: если это правда, была ли причина выбирать json вместо yaml? Или, скорее, есть ли какие-то преимущества, которые предлагает json для этой ситуации?

0
Karthik T 21 Окт 2013 в 06:02

1 ответ

Лучший ответ

Есть некоторая поддержка JSON с использованием хэшей redis, но я никогда не использовал ее и сомневаюсь, что это будет полезно в этом случае.

Resque, вероятно, использует JSON вместо YAML, потому что он более широкий. Я также нашел комментарий по этому поводу.

@defunkt

YAML не лучше сохраняет объекты Ruby - со сложными объектами он может сериализовать объект, который не может быть десериализован позже. Это неприемлемо.

Если вам нужны символьные ключи, я считаю, что у YAJL есть опция, которую мы могли бы использовать для сохранения ключей. Также вы можете тривиально вызвать symbolize_keys для объекта, если у вас есть ActiveSupport.

https://github.com/resque/resque/issues/26

0
Community 20 Июн 2020 в 12:12