問題タブ [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.
ruby-on-rails - レスキューされない ActiveRecord 例外
私は次のコードブロックを持っています:
その理由は、おそらくご想像のとおり、複数のプロセスがこのメソッドを同時に呼び出してユーザーを作成する可能性があるためです (まだ存在しない場合)。そのため、最初のプロセスがブロックに入り、新しいユーザーの初期化を開始する間、属性を設定して最後に save! を呼び出すと、ユーザーはすでに作成されている可能性があります。その場合、ユーザーが存在するかどうかを再度確認し、まだ存在しない場合にのみ例外を発生させます (= その間、他のプロセスが作成していない場合)。
問題は、定期的に ActiveRecord::RecordInvalid 例外が保存から発生することです! レスキューブロックから救出されません。何か案は?
編集:
わかりました、これは奇妙です。私は何かが欠けているに違いない。Simone のヒントに従って、コードを次のようにリファクタリングしました。
今、私は次の例外を受け取りました:
「unless user.save」と書かれている行にスローされます。それはどうしてですか?Rails は、電子メールが一意であるためユーザーを作成できると考えていますが、Mysql の一意のインデックスが挿入を妨げていますか? それはどのくらいの確率ですか?どうすれば回避できますか?
ruby-on-rails - Ruby Timeout::timeout は例外を発生させず、文書化されたものを返しません
私はこのコードを持っています:
次に、このコードを含むメソッドを起動します。これがスタック トレースの始まりです。
したがって、呼び出しがタイムアウトしたと単純に考えていますが、「印刷してください」は印刷されcomplete_results
ず、タイムアウトステータスの戻り値(ドキュメントに記載されているように、trueまたはfalseのいずれか)であると想定されていますが、ブール値ではありません。
私は何か間違ったことをしていますか?
ruby-on-rails - サーバー障害からRailsアプリを救出
専用サーバーでホストされているレールアプリがあります。今日、何かが起こりました。アプリが応答せず、ssh アクセスもありません。再起動しても解決せず、テクニカル サポートの応答を待っています。しかし、これは問題ではありません。サーバーに障害が発生した場合でも、このアプリをオンラインにする必要があるだけです。最も簡単なオプションはどれですか? 別のホスティングに 2 番目のサーバーを作成し、障害が発生した場合にそこからサービスを提供できますか? その場合、db とファイルを同期する方法は? アプリケーションの負荷は高くありません。利用できるようにする必要があるだけです。
ruby - 複数のエラークラスを Ruby のレスキュー句に DRY 方式で渡す
ruby で複数のタイプの例外をレスキューする必要があるコードがいくつかあります。
私がやりたいことは、レスキューしたい例外タイプのリストを何らかの方法で保存し、それらのタイプをレスキュー句に渡すことです。
その後:
これは可能ですか?本当にハックな呼び出しなしで可能eval
ですか? TypeError: class or module required for rescue clause
上記を試みたときに私が見ていることを考えると、私は希望を持っていません。
ruby - 「レスキュー」で「再試行」してもRubyが「保証」しない
次の begin-rescue-ensure ブロックを考えてみましょう。
そのコードをそのまま実行すると、「make_service_call()」という関数がないため、例外が発生します。それで、リトライします。しかし、「再試行」のために制御が「確実」にならないため、無限ループに陥ります。ブロックの一部を「保証」して、「開始」または「レスキュー」で何が起こっても、ブロック内のコードが実行されるようにするべきではありませんか?
もちろん、'begin' でカウントを増やすこともできますが、それは重要ではありません。明確にするために、「保証」について質問しているだけです。
ruby-on-rails - Rails 3:レンダリング時にアクションを実行する方法:action?
Rails3はRestを推奨しています。例えば、私はブログシステムを作っています。
Railsがrenderでアクションを実行できる場合、結果のコードは単純です。たぶん、解決策は新しい行動を起こすことです。しかし、仕様には新しいアクションがありません...何が良いですか?あなたはどうですか??
すみません、私の英語は悪いです。
ruby-on-rails-3 - レスキュー例外。レール3
ビューで例外をキャッチしようとしています。.html.erb ファイルで rgmagick を使用します。
この方法でファイルが正しくないときに例外をキャッチしようとしていますが、正しくありません:S
何か案が??どうもありがとう!
ruby - Twitter Gem-救助は考慮すべきか?
私はTwitterGemを使用しており、長時間実行されるRubyタスクを作成しました。一般的なエラーを処理できるようにしたいので、保護するために検討する必要があるエラーのリストを作成したいと考えています(たとえば、失敗したクジラ500)
これが私のコード関数の開始/終了ループです:
保護して再試行する他のエラーについて考えられますか?これはエラーを処理するための適切に構造化された方法ですか?考慮すべきいくつかの設計実装は何ですか?
ruby-on-rails - Rescue_from は、ビューまたはヘルパーから Timeout::Error をレスキューしません
すべてのアクションをタイムアウト ブロックに入れるために、アプリケーション コントローラーに around_filter を設定して、Heroku の 30 秒の制限に達する前にアクションが失敗するようにしています。これらのタイムアウトをきれいに救うために、rescue_from Timeout::Error もあります。残念ながら、rescue_from は時々しか機能しません。
コントローラー内で実行中にタイムアウトが発生した場合は問題なく動作しますが、ビューまたはヘルパー内でタイムアウトが発生した場合はレスキューに失敗します。
Timeout::Error の継承元である Interrupt も SignalException も、正しくレスキューしません。ただし、例外自体をレスキューすると、ビューとヘルパー内で正しくレスキューされます。
これを機能させるために Timeout::Error を救う他の方法はありますか?