Есть ли способ перенаправить (например, redirect_to) URL-адрес от рабочего модуля в рельсах?

Привет, я обрабатываю некоторые фоновые задания, и мне нужно перенаправить URL-адрес из модуля или непосредственно из работника, но, насколько мне известно, есть только один метод, то есть redirect_to, но он недоступен в модуле и работнике в соответствии с архитектурой rails MVC, но Мне нужно сделать это.

Пожалуйста, смотрите ниже мой код: -

@oauth = Koala::Facebook::OAuth.new(Figaro.env.fb_app_id,Figaro.env.fb_secret_token,Figaro.env.fb_callback_url)
oauth_code_url = @oauth.url_for_oauth_code
redirect_to oauth_code_url

Я также включил include ActionController::UrlFor, чтобы получить метод redirect_to в Module и Worker, но он снова выдает ошибку, и я не смог вызвать методы контроллера в модуле или worker. может ли кто-нибудь предложить, что было бы лучшим подходом для этого?


person Ravindra Yadav    schedule 25.08.2017    source источник
comment
Перенаправить что? Рабочий процесс не выполняет сам запрос браузера. Вызывается ли рабочий процесс контроллером, а затем контроллер ожидает его завершения?   -  person Fire Lancer    schedule 25.08.2017
comment
@FireLancer Нет, мой рабочий не задействован контроллером. На самом деле, у меня есть URL-адрес обратного вызова, и я хочу нажать на этот URL-адрес, после чего я получу client_code, а затем мне нужно отправить этот клиентский код в FB, чтобы получить токен доступа, и этот токен истечет через определенный интервал времени, поэтому мне нужно запускать эту задачу каждый раз.   -  person Ravindra Yadav    schedule 26.08.2017


Ответы (1)


Перенаправления имеют смысл только внутри цикла запроса/ответа, рабочие процессы обычно происходят в фоновом режиме и асинхронно, поэтому пользователь, который мог инициировать, не ждет ответа рабочего процесса.

Если вы хотите подождать (запустить воркер синхронно), то воркер не должен перенаправлять, воркер должен просто «сигнализировать» контроллеру о выполнении перенаправления (это потому, что вы хотите сохранить разделение задач).

person Leonel Galán    schedule 25.08.2017
comment
мой работник не связан с контроллером, поэтому я столкнулся с этой проблемой. рабочий должен просто подать сигнал контроллеру для выполнения перенаправления ?? как рабочий может подать сигнал контроллеру?? Если это возможно через модуль, то я также могу использовать модуль и включить этот модуль внутри рабочего? - person Ravindra Yadav; 26.08.2017
comment
Если ваш контроллер не задействован, кого именно вы хотите перенаправить? Если нет пользователя, ожидающего выполнения действия, перенаправить некого? - person Leonel Galán; 27.08.2017
comment
да, контроллер не задействован, на самом деле мне нужно сгенерировать новый токен на стороне сервера, поэтому я написал код для обновления токена до истечения срока его действия. и ни один пользователь не ждет этого, и использование метода redirect_to состоит в том, чтобы просто нажать URL-адрес обратного вызова, потому что я пробовал другие библиотеки, такие как Net, HtttpClient и т. д., они отправляют запрос и получают ответ на URL-адрес обратного вызова, но URL-адрес обратного вызова не вызывается (возвращаясь к моему другому действию контроллера), но redirect_to работает нормально. - person Ravindra Yadav; 28.08.2017