Eu gostaria de levantar uma exceção para que ele faça a mesma coisa que uma exceção normal do Rails faz. Em especial, mostre a exceção e o rastreamento de pilha no modo de desenvolvimento e mostre a página "Desculpe, mas algo deu errado" no modo de produção.
Tentei o seguinte:
raise "safety_care group missing!" if group.nil?
Mas ele simplesmente grava "ERROR signing up, group missing!"
no arquivo development.log
ruby-on-rails
exception
exception-handling
Chirag Patel
fonte
fonte
Respostas:
Você não precisa fazer nada de especial, deve apenas funcionar.
Quando eu tiver um aplicativo Rails novo com este controlador:
e vai para
http://127.0.0.1:3000/foo/
Estou vendo a exceção com um rastreamento de pilha.
Você pode não ver todo o stacktrace no log do console porque o Rails (desde 2.3) filtra as linhas do stack trace que vêm do próprio framework.
Veja
config/initializers/backtrace_silencers.rb
no seu projeto Railsfonte
Você pode fazer assim:
O que você está fazendo aqui é criar uma classe "NotActivated" que servirá como Exception. Usando aumento, você pode lançar "NotActivated" como uma exceção. rescue_from é a maneira de capturar uma Exceção com um método especificado (not_activated neste caso). Um exemplo bem longo, mas deve mostrar como funciona.
Muitas felicidades,
Fabian
fonte
Se você precisa de uma maneira mais fácil de fazer isso e não quer muito barulho, uma execução simples pode ser:
Isso levantará uma exceção, digamos
e
come.message = something bad happened!
e então você pode resgatá-lo como está resgatando todas as outras exceções em geral.
fonte