Question

I see myself handling similar exceptions in a rather similar fashion repeatedly and would like to use aspects to keep this error handling code outside of the core business logic. A quick search online pulled up a couple of ruby gems (aquarium, aspector, etc) but I don't see a whole lot of downloads for those gems in rubygems. Given that, I want to believe there are probably other nicer ways to deal with this in Ruby.

get '/products/:id' do
  begin
    product = find_product params[:id]
  rescue Mongoid::Errors::DocumentNotFound
    status 404
  end
end

get '/users/:id' do
  begin
    user = find_user params[:id]
  rescue Mongoid::Errors::DocumentNotFound
    status 404
  end
end

In the above example, there are 2 Sinatra routes that look for a requested object by ID in MongoDB and throw a 404 if the object were not to be found. Clearly, the code is repetitive and I am looking to find a Ruby way to make it DRY.

Was it helpful?

Solution

You can see answer in this guide.

You code example:

error Mongoid::Errors::DocumentNotFound do status 404 end

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top