Closed domi10momo closed 3 years ago
@nakamitsu-nozomi @great084 ご確認ありがとうございます。 エラーコードの出力、各環境設定にログのレベルを設定しました。
また、ログイン機能もlogger使用しようと試したのですが、正常に行かず悩み中です。
user_data=nil
とした場合、rescueには進むものの、2の問題が解決されず
元のコード+rescueの処理の場合、rspecは通るものの、1の問題が解決されず
変数user_data[:uid]
が異常でもrescueには進まない
(ログインができないだけでcurrent_userが設定されていない場合のroot_urlに戻るため、エラーは発生せず)
また、上記のため、ログイン不可のflashメッセージが表示されず、rspecが通らない
session_controller.rb の create
現状master
def create
user_data = request.env["omniauth.auth"]
if user_data[:uid]
user = user_table_update(user_data)
log_in(user)
redirect_to root_url
else
redirect_to root_url, danger: "ログインできませんでした。もう一度ログインしてください"
# flash[:alert] = "ログインできませんでした。もう一度ログインしてください"
end
end
エラー出力のため、rescueを用いたコード
def create
user_data = request.env["omniauth.auth"]
if user_data[:uid]
user = user_table_update(user_data)
log_in(user)
redirect_to root_url
end
rescue StandardError => e
put_api_error_log("login", status, e)
redirect_to root_url, danger: "ログインできませんでした。もう一度ログインしてください"
end
@domi10momo
昨日お話したとおり、Twitterのアカウント認証は、レスポンスとして明確にエラーが返ってくるわけではないので、自アプリ内でエラーハンドリングを行う必要があります。(つまりrescue StandardError => e
を定義してもヒットしない)
現状if user_data[:uid]
が、実質的なエラー判定なので、else ブロックにログ出力してあげれば今回の要件は満たせます。
なお、きちんと(?)エラー発生させて、エラー処理をしたいということであればraiseでエラーを意図的に発生させて、それをキャッチするという書き方もできます。
def create
user_data = request.env["omniauth.auth"]
raise StandarError "リクエストの返り値が正しく有りません" if user_data[:uid]
#正常な処理
rescue StandarError
#エラー処理(ログ出力)
end
@great084 @nakamitsu-nozomi
ありがとうございます。実装修正しました。
user_data
がnilの場合とuser_data[:uid]
がnilの場合で挙動が違ったため、2つログ出力記載しています。
ご確認お願いします。
@great084 ありがとうございます。 修正し、development環境でdebugログ出力できること確認できました。
tweet取得の際、期間指定しなかった場合、システムエラーとなるため、修正 (Unpermited Parameter を削除するタスクの実装時に間違えたと思われます。すみません。)
@great084 すみません、51行目の内容について勘違いしていました。 ログ出力レベル変更しています。ご確認お願い致します。
@great084
OKです。
以下の指摘だけ対応漏れているので対応しておいてください。 https://github.com/great084/twitter_tool/pull/84/files#r560964438
OKありがとうございます。修正したため、merge致します。
closes #82
目的・概要
ユーザ起因ではないエラーの際にログを
log/
に残す。 原因を追えるようにする。実装内容
UI変更概要
画面キャプチャ
稼働確認チェック
参考資料
連絡事項