class Konnyaku

Constants

VERSION

Public Class Methods

run() click to toggle source
# File lib/konnyaku/konnyaku.rb, line 3
def run
    tp = TracePoint.new(:raise) do |tp|
        lineno = tp.lineno
        path   = tp.path
        msg = tp.raised_exception.message
        puts "例外:#{tp.raised_exception.class} が発生しました"
        puts "ソースコード: #{path} の #{lineno.to_s} 行目にエラーの原因があります"
        
        msg = translate(msg) 
        puts msg
    end
    tp.enable
end
translate(msg) click to toggle source
# File lib/konnyaku/translate.rb, line 3
def translate(msg)
    case msg
        when /uninitialized constant/
            return msg.gsub(/#{$&}/, "定義されていない定数") + " があります"
        when /undefined local variable or method/
            return msg.gsub(/#{$&}/, "定義されていない変数またはメソッド").gsub(/ for /, " が ").sub(/`|'/, "").gsub(/for/, "") + " にあります"
        when /undefined method/
            return msg.gsub(/#{$&}/, "定義されていないメソッド").gsub(/ for /, " が ").gsub(/`|'/, "") + " にあります"
        when /uninitialized class variable/
            return msg.gsub(/#{$&}/, "初期化されていないクラス変数").gsub(/ for.+$/, "").gsub(/ in /, " が ") + " クラスにあります"
    end 
end