問題タブ [rescue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8123 参照

ruby-on-rails - レスキューされない ActiveRecord 例外

私は次のコードブロックを持っています:

その理由は、おそらくご想像のとおり、複数のプロセスがこのメソッドを同時に呼び出してユーザーを作成する可能性があるためです (まだ存在しない場合)。そのため、最初のプロセスがブロックに入り、新しいユーザーの初期化を開始する間、属性を設定して最後に save! を呼び出すと、ユーザーはすでに作成されている可能性があります。その場合、ユーザーが存在するかどうかを再度確認し、まだ存在しない場合にのみ例外を発生させます (= その間、他のプロセスが作成していない場合)。

問題は、定期的に ActiveRecord::RecordInvalid 例外が保存から発生することです! レスキューブロックから救出されません。何か案は?

編集:

わかりました、これは奇妙です。私は何かが欠けているに違いない。Simone のヒントに従って、コードを次のようにリファクタリングしました。

今、私は次の例外を受け取りました:

「unless user.save」と書かれている行にスローされます。それはどうしてですか?Rails は、電子メールが一意であるためユーザーを作成できると考えていますが、Mysql の一意のインデックスが挿入を妨げていますか? それはどのくらいの確率ですか?どうすれば回避できますか?

0 投票する
3 に答える
18869 参照

ruby-on-rails - Ruby Timeout::timeout は例外を発生させず、文書化されたものを返しません

私はこのコードを持っています:

次に、このコードを含むメソッドを起動します。これがスタック トレースの始まりです。

したがって、呼び出しがタイムアウトしたと単純に考えていますが、「印刷してください」は印刷されcomplete_resultsず、タイムアウトステータスの戻り値(ドキュメントに記載されているように、trueまたはfalseのいずれか)であると想定されていますが、ブール値ではありません。

私は何か間違ったことをしていますか?

0 投票する
1 に答える
123 参照

ruby-on-rails - サーバー障害からRailsアプリを救出

専用サーバーでホストされているレールアプリがあります。今日、何かが起こりました。アプリが応答せず、ssh アクセスもありません。再起動しても解決せず、テクニカル サポートの応答を待っています。しかし、これは問題ではありません。サーバーに障害が発生した場合でも、このアプリをオンラインにする必要があるだけです。最も簡単なオプションはどれですか? 別のホスティングに 2 番目のサーバーを作成し、障害が発生した場合にそこからサービスを提供できますか? その場合、db とファイルを同期する方法は? アプリケーションの負荷は高くありません。利用できるようにする必要があるだけです。

0 投票する
3 に答える
42976 参照

ruby - 複数のエラークラスを Ruby のレスキュー句に DRY 方式で渡す

ruby で複数のタイプの例外をレスキューする必要があるコードがいくつかあります。

私がやりたいことは、レスキューしたい例外タイプのリストを何らかの方法で保存し、それらのタイプをレスキュー句に渡すことです。

その後:

これは可能ですか?本当にハックな呼び出しなしで可能evalですか? TypeError: class or module required for rescue clause上記を試みたときに私が見ていることを考えると、私は希望を持っていません。

0 投票する
2 に答える
5151 参照

ruby - 「レスキュー」で「再試行」してもRubyが「保証」しない

次の begin-rescue-ensure ブロックを考えてみましょう。

そのコードをそのまま実行すると、「make_service_call()」という関数がないため、例外が発生します。それで、リトライします。しかし、「再試行」のために制御が「確実」にならないため、無限ループに陥ります。ブロックの一部を「保証」して、「開始」または「レスキュー」で何が起こっても、ブロック内のコードが実行されるようにするべきではありませんか?

もちろん、'begin' でカウントを増やすこともできますが、それは重要ではありません。明確にするために、「保証」について質問しているだけです。

0 投票する
1 に答える
511 参照

ruby-on-rails - Rails 3:レンダリング時にアクションを実行する方法:action?

Rails3はRestを推奨しています。例えば、私はブログシステムを作っています。

Railsがrenderでアクションを実行できる場合、結果のコードは単純です。たぶん、解決策は新しい行動を起こすことです。しかし、仕様には新しいアクションがありません...何が良いですか?あなたはどうですか??

すみません、私の英語は悪いです。

0 投票する
1 に答える
550 参照

ruby-on-rails-3 - レスキュー例外。レール3

ビューで例外をキャッチしようとしています。.html.erb ファイルで rgmagick を使用します。

この方法でファイルが正しくないときに例外をキャッチしようとしていますが、正しくありません:S

何か案が??どうもありがとう!

0 投票する
3 に答える
1110 参照

ruby - Twitter Gem-救助は考慮すべきか?

私はTwitterGemを使用しており、長時間実行されるRubyタスクを作成しました。一般的なエラーを処理できるようにしたいので、保護するために検討する必要があるエラーのリストを作成したいと考えています(たとえば、失敗したクジラ500)

これが私のコード関数の開始/終了ループです:

保護して再試行する他のエラーについて考えられますか?これはエラーを処理するための適切に構造化された方法ですか?考慮すべきいくつかの設計実装は何ですか?

0 投票する
2 に答える
2169 参照

ruby-on-rails - Rescue_from は、ビューまたはヘルパーから Timeout::Error をレスキューしません

すべてのアクションをタイムアウト ブロックに入れるために、アプリケーション コントローラーに around_filter を設定して、Heroku の 30 秒の制限に達する前にアクションが失敗するようにしています。これらのタイムアウトをきれいに救うために、rescue_from Timeout::Error もあります。残念ながら、rescue_from は時々しか機能しません。

コントローラー内で実行中にタイムアウトが発生した場合は問題なく動作しますが、ビューまたはヘルパー内でタイムアウトが発生した場合はレスキューに失敗します。

Timeout::Error の継承元である Interrupt も SignalException も、正しくレスキューしません。ただし、例外自体をレスキューすると、ビューとヘルパー内で正しくレスキューされます

これを機能させるために Timeout::Error を救う他の方法はありますか?