Задать вопрос
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
  • Вопрос задан
  • 195 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
  • Хороший программист
    Интенсив по Ruby on Rails
    5 месяцев
    Далее
  • Thinknetica
    Оптимизация Ruby/Rails-приложений
    9 недель
    Далее
Решения вопроса 1
AMar4enko
@AMar4enko
Потому что промежуточное хранилище что resque, что sidekiq, хранит данные в виде строк, чаще всего в redis. Поэтому о передаче объектов, подобных Class, забудьте (об этом, кстати, написано в документации).
При правильно спроектированном приложении необходимости передавать сложные объекты в воркеры нет. Судя по всему, вы неправильно интегрировали resque в проект - настройки можно передать воркеру при старте resque.
Внутри библиотеки используется json-формат для хранения параметров вызова, по-моему, поэтому в качестве параметров воркеров можно использовать объекты с .to_json
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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