ifRails.env.production?
config.after_initializedo
port =RAILS_ENV=="production"?11300 : 11310AsyncObserver::Queue.queue=Beanstalk::Pool.new(["localhost:#{port}"])
# This value should change every time you make a release of your app.AsyncObserver::Queue.app_version=1.0endend
app/models/product.rb
defcheck_image_urlunless image_url.blank?if image_url_checked_at.nil?|| (image_url_good? && image_url_checked_at <2.weeks.ago)
begin
async_send :ensure_image_urlrescueBeanstalk::NotConnectedNorman.deliver_shout"Beanstalkd server did not connect in #{RAILS_ENV} mode at #{Time.now}",
"Product image checking will not be available until this is rectified"endendendenddefensure_image_urlreturnunlessRails.env.production?begin
response =SimpleHttp.head(image_url)
content_type = response["content-type"]
if content_type =~/^image/self.image_url_good=trueelseself.image_url_good=falseendrescueErrno::ETIMEDOUTreturnrescueRuntimeError, SocketError => err
self.image_url_good=falseendself.image_url_checked_at=Time.nowThinkingSphinx.deltas_enabled=false
save false# Don't validate, just save!ThinkingSphinx.deltas_enabled=trueend