良くあるダメなエラーメッセージ エラーが起きたときは、以下のようにエラーメッセージをどこかしらに出力すると思います。 $c->log->error('something wrong!'); ただ、このエラーメッセージって、実際に発生したときには意味がわからないことが多いのです。 $c->log->error('error!'); 本気でこういう「error!」とだけ吐くメッセージだと、エラーが起きたことしか伝わってきません。程度の差はあれ意味のわからないエラーメッセージはこの世にあふれているかと思います。 機械的なエラー情報 そういうわけで、たいていは Exception クラスや Logger クラスで多くの補助が受けられるようになっていると思います。 発生時刻 発生場所 stack trace 変数の状態 ただ、このような機械的な情報だけだと、結局、運用上は対応が難しい場面ってのが多か
Ruby 標準添付ライブラリの CSV で Windows-31J (Shift_JIS でも良いけど) な CSV を作っていたのだけれども、特定の文字が含まれていると Encoding::UndefinedConversionError になってしまう。 irb(main):011:0> CSV.open(File.join('/var/tmp/hoge.csv'), 'w', encoding: 'Windows-31J') do |csv| irb(main):012:1* csv << %w( d é f ) irb(main):013:1> end Encoding::UndefinedConversionError: U+00E9 from UTF-8 to Windows-31J irb(main):014:0> CSV.open(File.join('/var/tmp/h
http://www.sinatrarb.com/intro.html#Error%20Handling こちらを見ると例外はRackオブジェクトのsinatra.errorに入っているとあるが、ブロック引数としても受け取ることができる。 (バージョン1.4.4で確認) require "sinatra" # developmentモードでもデバッグ表示させない set :show_exceptions, false # ブロック引数で例外オブジェクトを受け取る error do |e| status 500 # これでもできるけど #body env['sinatra.error'].message # これでもよい body e.message end get "/hoge" do raise "hoge" end $ bundle exec ruby app.rb $ curl lo
Padrinoでエラーのハンドリングを行うには、以下のように書くんだけど、これだけだとダメで、 class MyApp < Padrino::Application # いろいろ省略 # こんな感じでエラー処理をカスタマイズ error do puts "ここにエラー処理をかく" end end 以下のサイトによると、 Sinatra's error handler with custom exceptions does not work · Issue #403 · padrino/padrino-framework · GitHub 次の2行を追加しないと、実行されないらしい。 class MyApp < Padrino::Application #いろいろ省略 # 以下の2行を追加 disable :raise_errors disable :show_exceptions # こん
When I get exceptions, it is often from deep within the call stack. When this happens, more often than not, the actual offending line of code is hidden from me: tmp.rb:7:in `t': undefined method `bar' for nil:NilClass (NoMethodError) from tmp.rb:10:in `s' from tmp.rb:13:in `r' from tmp.rb:16:in `q' from tmp.rb:19:in `p' from tmp.rb:22:in `o' from tmp.rb:25:in `n' from tmp.rb:28:in `m' from tmp.rb:
FuelPHP1.6が出たので、製作中のWEBアプリのフレームワークをFuelPHP1.5→1.6に更新してみた。 すると、 Composer is not installed. Please run "php composer.phar update" in the root to install Composer のエラーが発生する。 FuelPHP1.6のChangelog に載っていた通り。 This release officially introduces Composer to FuelPHP. You will have to install it, and run a 'php composer.phar update' to pull in any required packages. Without this step, 1.6 WILL NOT WORK!!! サー
本記事は1分で実現できる有用な技術 Advent Calendar 2015の4日目の記事です。 WEB アプリケーションを開発していると「ユーザのブラウザで起きたエラーをサーバに送って DB に収集したい」という要望が出てきたり、外部からお願いされたりすることがあります。 こういう場面で、「どうやればいいのん」と悩む方は少なくないようです。 このような場合にはイベントハンドラの onerror を利用すると便利です。 エラーハンドリングしたい対象のコードより先に呼ばれる位置で、次のようなコードをぺいっと貼っ付けておきましょう。 そうそう、try-catch している場合には onerror に引っかからないので、そういった場合には個別に呼び出してください。 window.onerror = function(errorMsg, fileName, lineNumber) { var er
はじめに 追記@2016/06/22 Railsでの例外処理についてこの後一度真剣に考えてみたので、先に貼っておきます。 totutotu.hatenablog.com 本編 Rails学習ノート続きです。 今回は403 Forbiddenの例外処理を作っていきたいと思います。 おおまかに以下のような流れで書いていきます。 例外を補足する Viewをつくる 例外処理をつくる 403 Forbidden 403 Forbiddenのステータスコードは、要求されたリソースはサーバー上にあるのだけどアクセス権やIPアドレス制限などの問題でアクセス拒否されたことを表します。 例外を補足する まずは例外を補足するための処理をcontrollerに書いていきます。 新しくActionController::ActionControllerErrorクラスを継承したForbiddenクラスと、IpAdd
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く