Задать вопрос
rutaka_n
@rutaka_n
softwere engineer

Почему в ruby объект преобразуется в строку при передаче в метод?

Я использую resque 1.25.* в приложении на Sinatra и возникает необходимость передать в resque-job объект приложеия Sinatra(settings), но почему-то при передача в метод job'а perform объект преобразуется в строку. Кто-нибудь сталкивался с чем-то подобным? и почему это так происходит?
пример:
p settings.class #=> Class
Resque.enqueue(JobClass, settings)
#In JobClass
def perform(settings)
  p settings.class #=> String
end
  • Вопрос задан
  • 193 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
AMar4enko
@AMar4enko
Потому что промежуточное хранилище что resque, что sidekiq, хранит данные в виде строк, чаще всего в redis. Поэтому о передаче объектов, подобных Class, забудьте (об этом, кстати, написано в документации).
При правильно спроектированном приложении необходимости передавать сложные объекты в воркеры нет. Судя по всему, вы неправильно интегрировали resque в проект - настройки можно передать воркеру при старте resque.
Внутри библиотеки используется json-формат для хранения параметров вызова, по-моему, поэтому в качестве параметров воркеров можно использовать объекты с .to_json
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы