Отключить отображение трассировки стека в консоли Rails

Есть ли способ уменьшить количество сообщений об ошибках в консоли rails? В частности, отключить отображение трассировки стека? Большую часть времени это бесполезно и совершенно раздражает, когда я страдаю от дурацких пальцев.

Когда я набираю что-то вроде:

MyModel.vtrsyr

Мне не нужна трассировка стека, чтобы сказать мне, что нет метода 'vtrsyr'


person Ian    schedule 04.12.2015    source источник


Ответы (1)


Важно то, что консоль rails использует irb и имеет доступ к ряду параметров конфигурации irb.

$ rails c
Loading development environment (Rails 4.2.0)
>> conf
=> conf.ap_name="irb"
conf.auto_indent_mode=false
conf.back_trace_limit=16
.
.
.

Вот оно: conf.back_trace_limit. Так:

conf.back_trace_limit = 0

эффективно отключит обратную трассировку для текущего сеанса, и вывод будет красивым и лаконичным:

>> MyModel.gnu
NoMethodError: undefined method `gnu' for MyModel:Class

or

>> obj.do_defective_math
ZeroDivisionError: divided by 0

Для большего удобства функцию можно определить в файле ~/.irbrc. Что-то типа:

def toggle_trace
  if conf.back_trace_limit > 0
    conf.back_trace_limit = 0
  else
    conf.back_trace_limit = IRB.conf[:BACK_TRACE_LIMIT]
  end
end

который можно назвать сеансом консоли, чтобы отключить или включить обратную трассировку по мере необходимости.

person Ian    schedule 05.12.2015
comment
Это круто. Обратите внимание, что сделать это на Rails Server можно с помощью: stackoverflow.com/questions/29169059/ См. мои примечания к ответам - мне пришлось объединить 2 решения, чтобы наконец остановить бесполезный вывод мусора, ссылающийся на источник - код, который я не поддерживаю. - person JosephK; 09.03.2017