title: Rails - How to send an image from a controller
body: <p>in my rails app, I need to pass back a image.</p>
  
  <p>I have a 1x1.gif tracking pixel in my route as follows:</p>
  
  <pre><code> match "/_ctrack.gif" =&gt; "email_tracking_pixels#my_method"
  </code></pre>
  
  <p>In the controller:</p>
  
  <pre><code>def my_method
      send_data open('https://www.xxxxxx.com/images/1x1_transparent.gif') {|f| f.read }, :filename =&gt; '1x1_transparent.gif', :type =&gt; 'image/gif'
  end
  </code></pre>
  
  <p>The problem is that for some reason sometimes this times outs. with the following error:</p>
  
  <pre><code>2011-03-07T20:08:36-08:00 heroku[router]: Error H12 (Request timeout) -&gt; GET www.xxxxxxx.com/images/1x1_transparent.gif dyno=web.1 queue=0 wait=0ms service=0ms bytes=0
  2011-03-07T20:08:36-08:00 app[web.1]: 
  2011-03-07T20:08:36-08:00 app[web.1]: OpenURI::HTTPError (503 Service Unavailable):
  2011-03-07T20:08:36-08:00 app[web.1]:   app/controllers/email_tracking_pixels_controller.rb:19:in `my_method'
  2011-03-07T20:08:36-08:00 app[web.1]:   lib/rack/www.rb:7:in `call'
  </code></pre>
  
  <p>Any ideas on how I can pass this image that's stored locally, versus having to use open and make a web call back to my own server?</p>
  
  <p>Thanks</p>