most of my apps have a lot to do with web services and often due to the third party site, I get timeout issues.
This is the error that I get:
execution expired
/usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill'
How do I rescue this kind of error in a rails app?
Depending on how you use the library, there are different ways to rescue the exception.
In the library
Assuming you created a wrapper to access some kind of web service, you can have the wrapper rescue the exception and always return a "safe" data.
In the action
If you call a specific method in the action and the method success is a requirement for the action, then you can rescue it in the action. In the following example I rescue the error and show a specific template to handle the problem.
def action
perform_external_call
rescue Timeout::Error => e
@error = e
render :action => "error"
end
In the controller
If the method call can occur in many different actions, you might want to use rescue_from
.
class TheController < ApplicationController
rescue_from Timeout::Error, :with => :rescue_from_timeout
protected
def rescue_from_timeout(exception)
# code to handle the issue
end
end
Use the awesome Rack::Timeout gem for your rack apps
Then use Simone's controller goodness
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With