snacktime
2006-Jul-30 03:59 UTC
[Rails] Returning custom error messages in ActionWebService
I want to return my own error messages from an API instead of letting the client see the stack trace. I''m returning a custom structure so I guess I could just put a member in that structure for the error message, although that seems like kind of a hack. Any suggestions? Chris
snacktime
2006-Jul-30 16:53 UTC
[Rails] Re: Returning custom error messages in ActionWebService
On 7/29/06, snacktime <snacktime@gmail.com> wrote:> I answered my own question sort of. I just created a top level struct > that I wrap everything else into that has members for error messags, > then make sure I have a rescue clause at the end of every method.Ok I spoke too soon. That works in the api methods but not in the invocation filters. I could call the filter from each method but that''s kind of a hack. The invocation filters will show part of the stack trace if you return false, which just isn''t acceptable for a lot of applications. Any ideas?
snacktime
2006-Jul-30 16:54 UTC
[Rails] Re: Returning custom error messages in ActionWebService
On 7/29/06, snacktime <snacktime@gmail.com> wrote:> On 7/29/06, snacktime <snacktime@gmail.com> wrote: > > I answered my own question sort of. I just created a top level struct > > that I wrap everything else into that has members for error messags, > > then make sure I have a rescue clause at the end of every method. > > Ok I spoke too soon. That works in the api methods but not in the > invocation filters. I could call the filter from each method but > that''s kind of a hack. The invocation filters will show part of the > stack trace if you return false, which just isn''t acceptable for a lot > of applications. Any ideas? >Ok after doing some investigating I found out you can set this: MyController.web_service_exception_reporting = false However when you do that then the exception message sent to the client makes soap4r croak with this message. I have no idea if it''s a bug in ActionWebService or soap4r. /usr/local/lib/ruby/1.8/soap/mapping/mapping.rb:106:in `fault2exception'': undefined method `+'' for nil:NilClass (NoMethodError) It also just sends a generic error message instead of the custom message I want returned to the client. Also, I can''t just call the before_invocation filter from the api method because it does it''s eager loading of associations before I can run my filter, and I happen to be using a postgresql set search_path in the filter, which has to be set before any other database queries.
snacktime
2006-Jul-30 17:33 UTC
[Rails] Re: Returning custom error messages in ActionWebService
I answered my own question sort of. I just created a top level struct that I wrap everything else into that has members for error messags, then make sure I have a rescue clause at the end of every method. On 7/29/06, snacktime <snacktime@gmail.com> wrote:> I want to return my own error messages from an API instead of letting > the client see the stack trace. I''m returning a custom structure so I > guess I could just put a member in that structure for the error > message, although that seems like kind of a hack. Any suggestions? > > Chris >