Forum: Ruby on Rails route to static resource?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
0f50b9a2ad85666d537d39bda49327ee?d=identicon&s=25 Jonathan Rochkind (jrochkind)
on 2009-04-16 20:46
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!
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2009-04-16 20:58
(Received via mailing list)
On Apr 16, 2009, at 2:46 PM, Jonathan Rochkind 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 Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
0f50b9a2ad85666d537d39bda49327ee?d=identicon&s=25 Jonathan Rochkind (jrochkind)
on 2009-04-16 21:08
Rob Biedenharn 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/thre...

But still wondering if I can 'route' to a static resource, occasionally
need that for other purposes too.
2505b282d57c29be797dc35b245adb4c?d=identicon&s=25 Philip Hallstrom (Guest)
on 2009-04-16 21:45
(Received via mailing list)
> 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.
0f50b9a2ad85666d537d39bda49327ee?d=identicon&s=25 Jonathan Rochkind (jrochkind)
on 2009-04-16 21:50
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 Hallstrom 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.
0f50b9a2ad85666d537d39bda49327ee?d=identicon&s=25 Jonathan Rochkind (jrochkind)
on 2009-04-16 21:51
Philip Hallstrom 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
2505b282d57c29be797dc35b245adb4c?d=identicon&s=25 Philip Hallstrom (Guest)
on 2009-04-16 21:56
(Received via mailing list)
> 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
This topic is locked and can not be replied to.