Как заставить рубин распечатать полную трассировку вместо усеченной?

Хороший ответ уже, но есть несколько других способов сделать это:

unique(c[c%in%a[a%in%b]])

или,

tst <- c(unique(a),unique(b),unique(c))
tst <- tst[duplicated(tst)]
tst[duplicated(tst)]

Вы можете явно опустить unique если вы знаете, что в a, b или c нет повторяющихся значений.

146
задан Franklin Yu 20 June 2016 в 00:18
поделиться

3 ответа

Exception#backtrace имеет весь стек в нем:

def do_division_by_zero; 5 / 0; end
begin
  do_division_by_zero
rescue => exception
  puts exception.backtrace
  raise # always reraise
end

(Вдохновленный Peter Cooper Ruby В блог)

212
ответ дан Gareth 20 June 2016 в 10:18
поделиться

IRB имеет настройку для этой ужасной "функции", которую вы можете настроить.

Создайте файл с именем ~ / .irbrc , который включает следующую строку:

IRB.conf[:BACK_TRACE_LIMIT] = 100

Это позволит вам увидеть как минимум 100 кадров стека в irb . Мне не удалось найти эквивалентную настройку для неинтерактивной среды выполнения.

Подробную информацию о настройке IRB можно найти в книге Кирка .

46
ответ дан 23 November 2019 в 22:18
поделиться

Я получал эти ошибки при попытке загрузить тестовую среду (через rake test или autotest), и предложения IRB не помогли. В итоге я обернул весь test/test_helper.rb в блок begin/rescue, и это помогло.

begin
  class ActiveSupport::TestCase
    #awesome stuff
  end
rescue => e
  puts e.backtrace
end
4
ответ дан 23 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: