Shoyan blog

Exception Notificationでundefined Method `current' for Time:Classエラーがでた

例外発生時にException Notificationで通知をしようと思い、導入してみたところ以下のエラーがでました。

1
2
ERROR: Failed to generate exception summary:
ActionView::Template::Error: undefined method `current' for Time:Class

日付の取得にTime.currentを使っており、Time.currentはActive supportにより拡張されたメソッドなのでActive Supportを使っている環境でしか動作しません(要するにRailsじゃないと動かない。Sinatraは…)。

PRもでているので対応してほしいところです。

対応方法

require 'active_support/core_ext/time’ をすることでTime.currentを使えるようにしました。

サンプルコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
require 'rubygems'
require 'bundler/setup'
require "sinatra/base"
require 'exception_notification'
# Time.currentを使えるようにする
require 'active_support/core_ext/time'

class App < Sinatra::Application
  use ExceptionNotification::Rack,
    :email => {
      :email_prefix => "[Exception] ",
      :sender_address => %{"notifier" <notifier@example.com>},
      :exception_recipients => %w{shoyan@example.com}
    }

  get '/' do
    begin
      // 何かの処理
    rescue Exception => e
      status 500
      ExceptionNotifier.notify_exception(e, env: env)
      e.message
    end
  end
end

Comments