0

Dropboxへのリクエストを実行してアクセスキーとシークレットが10分ごとに許可されているかどうかを確認するrufusスケジューラがあります。

許可されていない場合は、次の例外が報告されます。

DropboxAuthError in GalleryController#index

#<Net::HTTPUnauthorized:0x7ef04c8>

これを検出するためにスケジューラーにあるコードは、rufus-schedulerのドキュメントからのものです。

def scheduler.on_exception(job, exception)
  puts "job #{job.job_id} caught exception '#{exception}'"
end

上記の例外をキャッチしたいだけなので、例外を値と比較する条件付きステートメントを実行できるようにしたいのです。

 def scheduler.on_exception(job, exception)
  if exception == "DropboxAuthError"
    puts "job #{job.job_id} caught exception '#{exception}'"
  end
 end

しかし、例外はオブジェクトであるため、その比較はできません。

誰かが私がこれを行う方法について何か考えを持っていますか?

どうもありがとう。

4

1 に答える 1

0

猫の皮を剥ぐ多くの方法

if exception.message.match(/DropboxAuthError/)
  # ...
end

if exception.is_a?(Net::HTTPUnauthorized)
  # ...
end

Rubyオブジェクトを恐れないでください。

rufus-schedulerのドキュメントから選択したグローバルエラー処理を回避し、次のようなことを行うことができることに注意してください。

scheduler.every '10m' do
  begin
    # do the API call...
  rescue Net::HTTPUnauthorized => ne
    puts "not authorized"
  rescue => e
    puts "something wrong happened " + e.inspect
  end  
end

レスキューがタイプチェックを行う場所。

乾杯。

于 2013-01-19T06:25:36.183 に答える