2016-10-20 6 views
0

Моего Рубин Minitest терпит неудачу с ошибкой, как это:Как я могу найти, где исключение вызывается во время выполнения Minitest в Ruby?

<"undefined method `Error' for Api:Module"> 

Это не на самом деле метод, который отсутствует, это класс:

class Api::Error 

Этот класс определен в Lib/API /error.rb.

Я попытался добавить эту строку в конфиг/environment.rb в моих рельсах 2 приложения:

config.autoload_paths += %W(#{RAILS_ROOT}/lib) 

Он ничего не делает. Я не знаю, где или если RAILS_ROOT определен (это стандартная рельс 2 переменная?), Но я скопировал ее из прокомментированной строки в существующем исходном коде.

Как я могу убедиться, что класс загружен или найти, где он не включен? Подклассы Api :: Error создаются во многих файлах, и я не хочу их редактировать. Поскольку класс не может быть найден, stacktrace не указывает место, где происходит реальное повышение. Выполнение кода с помощью pry не работает, потому что, как только я получаю метод «get» в макете Webservice, я не могу войти.

ответ

0

Как только я обнаружил, что возникло исключение, я экспериментировал.

Это как код был изначально, что вызвало проблему:

raise Api::Error @p4_client 

Это изменение, которое я сделал:

raise Api::Error.new(@p4_client) 

Явный вызов конструктора с новым вместо того, чтобы логика рейза в Ruby он решил проблему.

Эта логика без явного вызова отлично работала в 1.8.7, но не выполнена в 1.9.3. Все делегировано через слои Actionpack.

 Смежные вопросы

  • Нет связанных вопросов^_^