2017-08-25 6 views
0

こんにちは私はいくつかのバックグラウンドジョブを処理していますが、モジュールからURLをリダイレクトするか、ワーカーから直接リダイレクトする必要があります。私の知る限り、redirect_toという方法は1つしかありませんが、モジュールやワーカーではレールMVC私はこれを行う必要があります。は、作業員からのURL、レールのモジュールからのリダイレクト(redirect_toのような)方法はありますか?

以下を参照してくださいは、私のコードです: -

@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 

私はモジュールと労働者でredirect_toメソッドを取得するためにinclude ActionController::UrlForをも含まれているが、それは再びエラーをスローだと私はへのコントローラメソッドを呼び出すことができませんでしたモジュールまたは作業員。誰もがこれを行うための最良の方法は何かをお勧めしますか?

+0

何をリダイレクトしますか?ワーカーはブラウザ要求自体を実行していません。作業員はコントローラによって呼び出されているのか、コントローラは作業者が完了するのを待っていますか? –

+0

@FireLancerコントローラに関与していない担当者はいません。実際には、私はコールバックURLを持っていて、私はclient_codeを受け取った後にそのURLをヒットしたいと思うので、クライアントトークンをFBに送ってアクセストークンを取得する必要があり、このトークンは一定の時間間隔で期限切れになる毎回このタスクを実行してください。 –

答えて

0

リダイレクトは要求/応答サイクル内でのみ意味を持ちますが、通常、ワーカーはバックグラウンドで非同期に実行されるため、開始した可能性のあるユーザーはワーカーの応答を待っていません。

待機したい(同期して作業者を実行する)場合は、作業者がリダイレクトする必要はありません。作業者はコントローラにリダイレクトを実行するよう単に通知する必要があります(これは、懸念事項)。

+0

私の労働者はコントローラに関与していないので、私はこの問題に直面しています。作業者は単にリダイレクトを実行するためにコントローラに「信号を送る」必要がありますか?どのように労働者がコントローラに信号を送ることができるか?モジュールを介して可能であれば、モジュールを使用してそのモジュールをワーカーに含めることもできますか? –

+0

コントローラーが関与していない場合は、正確にリダイレクトする人は誰ですか?アクションが実行されるのを待っているユーザがいない場合、リダイレクトする人はいませんか? – Leito

+0

はいコントローラーは関与していませんが、実際にはサーバー側から新しいトークンを生成する必要がありますので、期限が切れる前にトークンをリフレッシュするコードを書いています。ユーザーはそれを待っていませんし、redirect_toメソッドの使用は、Net、HtttpClientなどのような他のライブラリを試したのでコールバックURLにヒットするだけです。リクエストを送信してコールバックURLへの応答を取得しますが、 (私の他のコントローラーのアクションに戻ってくる)が、うまくいきました。 –

関連する問題