That’s amazon/ruby throwing an exception, just like ActiveRecord will if you call find with an invalid ID. There’s more about exceptions at:
http://www.rubycentral.com/book/tut_exceptions.html
What you want to do is to put your request to amazon/ruby inside a begin/rescue block. eg.
begin
result = req.asin_search(asin_value.to_s)
create_instance_from_amazon(result.products[0])
rescue
Handle the error, redirect, or whatever
end
Handle the result, continue execution
James.
You're probably best off putting the amazon/ruby files under RAILS_ROOT/lib/ and then calling them from a controller or model (depending on how you're using them). For example:
require 'amazon/search.rb'
class MyController < ApplicationController
include Amazon::Search
def amazon_search
req = Request.new(dev_key, associates_id)
result = req.asin_search(asin_value.to_s)
# do something with your result
rescue
redirect_to :action => 'error_page'
end
def error_page
end
end
You might want to take a look at my loads_from_amazon plugin:
James.