Route to static resource?


#1

Is there any way to write a route that delivers a static resource?

For some reason something (looks like Google Toolbar according to the
user-agent string) is requesting favicon.ico at all sorts of weird
places, not just at the root location where favicon.ico belongs, but at
/someAction/favicon.ico, etc.

I’d like to direct these all to the actual favicon.ico, to keep them out
of my error logs.

If I can’t do it in routes, I guess I can do it in apache.

Thanks for any help!


#2

On Apr 16, 2009, at 2:46 PM, Jonathan R. wrote:

of my error logs.

If I can’t do it in routes, I guess I can do it in apache.

Thanks for any help!

Do you have something in your layout that says to find “favicon.ico”
that could just be changed to “/favicon.ico” perhaps?

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#3

Rob B. wrote:

Do you have something in your layout that says to find “favicon.ico”
that could just be changed to “/favicon.ico” perhaps?

Nope, it’s nothing in my layout anywhere. It’s Google Toolbar acting up
for some reason. Apparently others have seen it too:
http://www.google.com/support/forum/p/Toolbar/thread?tid=78479dcc02044f76&hl=en

But still wondering if I can ‘route’ to a static resource, occasionally
need that for other purposes too.


#4

The problem is a catch-all route at the end would be AFTER the default

map.connect ‘:controller/:action/:id’

type routes. So weird routes that things like Google Toolbar and
MS Word keep sending like “fake/notAnAction.gif” would not get caught by
my catch-all, right?

I guess apache is the way to go.

Or, in another question I posted in another thread, figure out how to
keep Rails from putting a backtrace in for these kind of errors in
general. Haven’t figured out where in Rails is actually generating that
annoying backtrace in production.log in the first place.

Philip H. wrote:

You could add a catch-all route at the end that checks for
“favicon.ico” and then send-file the real favicon.ico back. Or to
speed it up do it using rack/metal.

But if were me, I’d do it in apache. That will definitely be the
fastest.


#5

occasionally
need that for other purposes too.

You could add a catch-all route at the end that checks for
“favicon.ico” and then send-file the real favicon.ico back. Or to
speed it up do it using rack/metal.

But if were me, I’d do it in apache. That will definitely be the
fastest.


#6

Philip H. wrote:

You could add a catch-all route at the end that checks for
“favicon.ico” and then send-file the real favicon.ico back. Or to
speed it up do it using rack/metal.

But if were me, I’d do it in apache. That will definitely be the
fastest.

Woops, I forgot my real question. Right, I can do a catch-all like that
(I actually did figure out a way to do that) – but how do I have a
rails route send back a static file?

Do I need to create a method in application.rb for sending back the
static file? Any way to tell a route to result in a static file?

THAT was my original question!

Jonathan


#7

rails route send back a static file?
You don’t. Look at the ‘send_data’ method in action controller.

Do I need to create a method in application.rb for sending back the
static file? Any way to tell a route to result in a static file?

If you’re going to do this in Rails and you’re using a version that
supports Rack, do it in rails metal. It will be a lot simpler and
keep the entire thing out of your logs.

http://railscasts.com/episodes/150-rails-metal

-philip