2009-08-14 65 views
1

情況很簡單。在Rails 2.3.3中,我有一個「Staff」命名空間,並且其中的控制器從StaffController繼承。 StaffController自己處理Staff名稱空間的根:導軌改變生產

map.namespace :staff do |staff| 
    staff.root :controller=>'staff', 
       :action=>'index' 
    # ... 
end 

在開發模式下,工作正常。在生產模式,但是,這打破:

uninitialized constant Staff::StaffController 

的其他問題,如某些傭工工作人員命名空間渲染錯誤之一。

爲什麼開發和生產模式在這種情況下行爲會有所不同,我該如何解決這個問題?

回答

1

如果在生產和開發模式下運行rake routes,會發生什麼情況?

這可能會幫助你縮小到(如bensie提到的)主機堆棧與框架/代碼問題。

+0

相關行相同:staff_root,/ staff。 {:controller =>「staff/staff」,:action =>「index」} - 我覺得這可能不是生產中的小故障,但是在開發中這個設置甚至可以工作。也許我會嘗試將員工的根頁面移動到不同的控制器,看看會發生什麼。 – Matchu 2009-08-14 16:24:04

+0

好,好。看到兩種情況下的路線都指向「職員/員工」,這幫助我看到了我需要去的地方,現在員工名稱空間根目錄擁有自己的控制器。謝謝! – Matchu 2009-08-14 16:32:43

0

您的生產環境是什麼樣的?乘客/阿帕奇?最新版本(2.2.4)?像這樣的不一致對於我來說通常是一個堆棧問題,而不是代碼問題,所以從這裏開始並不會傷害。

+0

It's Passenger在實際的部署服務器上,但我也在自己的服務器上運行生產 - 即使在WEBrick上也會出現相同的錯誤。 – Matchu 2009-08-14 16:20:00

0

看來你已經解決了這個,但兩件事情要注意:

  1. 一些微妙的變化可以用在VS的WEBrick /雜種阿帕奇(最好的做法是發生在實際安裝的Apache +本地用於開發的乘客

  2. 在某些部署情況下,當您實施條件路線並同時發生數據庫遷移時(最佳做法是將條件路線包裹在檢查中數據庫遷移,這可能意味着您需要重新啓動服務器呃加載和遷移,但仍然比替代方案更好。