2014-10-04 3 views
1

Я добавилПоднятия пользовательских ошибок в Rails 4

config.autoload_paths << Rails.root.join('lib') 

моих application.rb файла в модуле & добавлен файл

lib/my_app_name.rb, содержащего

module MyAppName 
    class MyError < StandardError 
    end 
end 

Но когда я пытаюсь поднять ошибка от моей модели вроде этого

raise MyAppName::MyError, "There was a problem" 

возвращает это ...

uninitialized constant MyAppName::MyError 

Я чувствую, что файл загружается из моего Lib каталога, потому что я использую другие файлы автозагружаемые оттуда, но не могу понять, почему ошибка не признается.

Заранее благодарим за любые предложения.

+1

Это не будет работать, поскольку вы не создали надлежащую структуру каталогов. Вам нужно создать my_app_name/my_error.rb, тогда автозагрузка будет работать как шарм. – Kuldeep

+0

Это сработало - спасибо Kuldeep! – Chris

ответ

0

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

modulename.methodname 

Я знаю, что вы объявляете класс в модуле, так что это немного по-другому чем моя ситуация, но вы пробовали этот способ повысить свою ошибку?

MyAppName.MyError 
+0

Спасибо за ответ readyornot, но похоже, что это была проблема с структурой каталогов в моей ситуации, которую решил Kuldeep. – Chris

+0

Без проблем, рад, что ваш код работает. Для справки мой модуль .rb-файл находится в lib/helpers. – readyornot

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