質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

1268閲覧

【Rails】gem固有のエラーが呼び出された時、gemで処理される前にエラーハンドリングしたい

Hinoarashi.

総合スコア76

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/09/24 01:24

編集2021/09/24 02:38

gem固有のエラーが起こるせいで、画像の通りエラーで画面が止まります。
画像

エラーを吐き出しているgemのコードは以下の通りです。

# Raises an exception if the response does contain a +stat+ different from "ok" def validate_response!(call, status) raise "empty call" unless call log "#{call.code} #{call.msg}" log "" status = [status] unless status.is_a? Array unless status.include? call.code if call.response.body.nil? || call.response.body.empty? raise RequestFailed.new(call.code, call.msg) else body = JSON.parse(call.response.body) raise RequestFailed.new(call.code, call.msg, body['error'], @ratelimit) end end end

gemのコードは変えたくありません。
rescue_fromなどでエラーハンドリングしたいのですが、どう書いたらよいでしょうか?
書き方がわかりません。。
何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/09/24 01:50

> rescue_fromなどでエラーハンドリングしたいのですが それを書いたらどうなったのでしょうか?
guest

回答2

0

自己解決

rescueにそのままエラー名突っ込めば解決しました。

例えばVimeoMe2::RequestFailedというエラーだったら

rescue VimeoMe2::RequestFailed => e #処理

でいけます。

投稿2021/10/06 08:54

Hinoarashi.

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここなどどうでしょう

別解
ライブラリで例外を起こさせたく無いのなら、ライブラリーを呼ぶ前に、例外を起こすようなデータなのかどうか判定して、起こす場合は呼ばない という方法もあります

投稿2021/09/24 09:54

編集2021/09/24 10:33
winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hinoarashi.

2021/09/24 10:14

知識不足で解決に至りませんでした。。 一応 vimeo_video = VimeoMe2::Video.new(ENV['VIMEO_ACCESSTOKEN'],"https://api.vimeo.com/videos/#{@movie_register.url}") 上記のコードが走った瞬間にエラーがライブラリで処理されるのですが、 そのコードの下でrescue処理をしても先にエラーが発生するだけだと思います。 この場合、どうすればライブラリでエラーが発生する前にエラーハンドリングできますでしょうか?
winterboum

2021/09/24 10:28

ライブラリーが例外を出すと、それを拾って 処理するのが rescue です。
Hinoarashi.

2021/10/06 08:52

お返事遅くなってすいません。。 ありがとうございます!解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問