Rails: routes and special characters like dots

Rails doesn’t seem to like dots and other special chars in its routes.
If you want to use URLs like http://www.domain.com/post/1/just_a_test.. logically the following route seems to be sensible:

map.connect '/post/:id/:title', :controller => 'forum', :action => 'show_post'

But rails won’t like the dots. Use a route like the following to allow a URL with special characters to be routed:

map.connect '/post/:id/:title', :controller => 'forum', :action => 'show_post', :requirements => { :title => /.*/ }

Keywords: dots, dot, no route matches, punkt, punkte, routes.rb, routing, route, rails, problem, won’t work

Sehnsucht nach Ruhe

Functional test for HTTP Basic Authentication in Rails 2

If you want to provide a username and password for a HTTP Basic Authentication in one of your functional tests, simply use the following:

def test_should_get_index
  @request.env["HTTP_AUTHORIZATION"] = "Basic " + Base64::encode64("username:password")
  get :index
  assert_response :success
  assert_not_nil assigns(:articles)
end

Keywords: rails test, functionals, authorization, basic http authentication, how to test

404 in rails

If you need to show a 404 error page from your controller without using an exception, this could help:

render :file => "#{RAILS_ROOT}/public/404.html",  :status => 404 and return

Rails 2: authenticate_or_request_with_http_basic and Apache

I’ve tried to use the new authenticate_or_request_with_http_basic function of Rails 2 to include a simple authentication for some special pages in an application. But Apache kept refusing authorization, even if the authenticate_or_request_with_http_basic-block was set to be always true.

To fix this, add or change this in your public/.htaccess (if using FastCGI):

RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]

Keywords: rails2 rails http authentication error bug refusing apache problem