Rails5 で例外が発生したときに backtrace を出す
Ruby Ruby on Rails
Published: 2019-06-06

やったこと

Rails5 で例外が発生したときにどこで発生したのかを知るため

Exception クラスの backtrace を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

ソースコード編集

app/controllers/tasks_controller.rb

class TasksController < ApplicationController

  def index
    begin
      @task = Task.new
      private_dummy
    rescue => e
      logger.debug(e.backtrace.join("\n"))
      logger.info('logger.info')
      logger.info(e)
    end
  end

  def private_dummy
    raise 'private_dummy'
  end
end

ログ確認

log/development.log

Started GET "/" for ::1 at 2019-06-06 22:12:58 +0900
Processing by TasksController#index as HTML
/Users/xxxxx/sample2/app/controllers/tasks_controller.rb:25:in `private_dummy'
/Users/xxxxx/sample2/app/controllers/tasks_controller.rb:16:in `index'
... (省略)

logger.info
private_dummy

参考