Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

This project is archived and is in readonly mode.

Namespaced controller sometimes uses default layout, views

#1049

This is quite elusive bug, happened twice on production but I wasn't able to reproduce it in development environment yet.

I have two SessionControllers. One is used for site patrons, is available under /sessions and uses application.html.haml layout. Another for admin login, is available under /admin/sessions and uses admin/administration.html.haml layout.

When server runs for some time namespaced controller starts to use application layout instead of administration one and renders views from app/views/sessions rather than app/views/admin/sessions. After server restart everything goes back to normal.

Relevant code snippets:

config/routes.rb


  map.namespace :admin do |admin|
    admin.resource :session
  end
  # snip...
  map.resources :sessions, :collection => {:admin_new => :get,
    :admin_create => :post, :auto_complete_for_user_email => :get}

app/controllers/admin/admin_controller.rb


class Admin::AdminController < ApplicationController
  layout 'admin/administration'
  before_filter :require_admin

  def index
  end
end

app/controllers/admin/sessions_controller.rb


class Admin::SessionsController < Admin::AdminController
  skip_before_filter :require_admin
end

Snippet from production.log


Processing AdminController#index (for 84.186.212.124 at 2008-09-15 10:55:18) [GET]
  Session ID: BAh7CzoMdXNlcl9pZDA6DnJldHVybl90bzA6DGNzcmZfaWQiJTU1NTZlYmI5
N2JkODdhMjlkZjZhYjhmZmFiZTI0YmEyOg1hZG1pbl9pZDAiCmZsYXNoSUM6
J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoKZXJyb3Ii
L0NvdWxkbid0IGxvZyB5b3UgaW4gYXMgJ2FkbWluQGV4YW1wbGUuY29tJwY6
CkB1c2VkewY7CkY6FGFkbWluX3JldHVybl90byILL2FkbWlu--197369dabe2c5f5e1ca0a02f1dbbae997ba76058
  Parameters: {"action"=>"index", "controller"=>"admin/admin"}
Redirected to http://beta.jobmensa.de/admin/session/new
Filter chain halted as [:require_admin] rendered_or_redirected.
Completed in 0.00692 (144 reqs/sec) | DB: 0.00168 (24%) | 302 Found [http://beta.jobmensa.de/admin]


Processing SessionsController#new (for 84.186.212.124 at 2008-09-15 10:55:18) [GET]
  Session ID: BAh7CzoMdXNlcl9pZDA6DnJldHVybl90bzA6DWFkbWluX2lkMDoMY3NyZl9p
ZCIlNTU1NmViYjk3YmQ4N2EyOWRmNmFiOGZmYWJlMjRiYTIiCmZsYXNoSUM6
J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoKZXJyb3Ii
L0NvdWxkbid0IGxvZyB5b3UgaW4gYXMgJ2FkbWluQGV4YW1wbGUuY29tJwY6
CkB1c2VkewY7ClQ6FGFkbWluX3JldHVybl90byILL2FkbWlu--350d8cc6aa7eb2fcca080b9f74646b44132e1215
  Parameters: {"action"=>"new", "controller"=>"admin/sessions"}
Rendering template within layouts/application
Rendering sessions/new
Rendering page snippet: Layout footer contents (0.00396)
Rendering page snippet: Layout footer links (0.00382)
Completed in 0.08378 (11 reqs/sec) | Rendering: 0.07137 (85%) | DB: 0.00899 (10%) | 200 OK [http://beta.jobmensa.de/admin/session/new]

Site runs on mongrel 1.1.5 and Ruby on Rails 2.1.0

Reported by Łukasz Piestrzeniewicz · September 15th, 2008 @ 10:32 AM

State: invalid
Milestone: 2.x
Assigned to: nobody
Importance: none

Activity

  1. Łukasz Piestrzeniewicz
    Łukasz Piestrzeniewicz
    • Tag changed from 2.1, actionpack, bug to 2.1, actionpack, bug

    Bug no longer exists in Rails 2.1.1.

    To reproduce in Rails 2.1.0:

    1. Create namespaced controller.
    2. Create non-namespaced controller with the same name.
    3. Start the server.
    4. Access non-namespaced controller.
    5. Try to access namespaced controller - request will be handled by non-namespaced controller.

    When namespaced controller is accessed first it handles further requests properly, and accessing non-namespaced one has no impact.

    September 23rd, 2008 @ 02:59 PM

  2. Pratik
    Pratik
    • State changed from new to invalid

    Closing as the issue has already been resolved.

    December 23rd, 2008 @ 03:14 PM