2009-08-14 152 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. 在某些部署情况下,当您实施条件路线并同时发生数据库迁移时(最佳做法是将条件路线包裹在检查中数据库迁移,这可能意味着您需要重新启动服务器呃加载和迁移,但仍然比替代方案更好。