Rails路由改变生产

时间:2009-08-14 15:04:09

标签: ruby-on-rails

情况很简单。在Rails 2.3.3中,我有一个“Staff”命名空间,其中的控制器继承自StaffController。 StaffController本身处理Staff命名空间的根目录:

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

在开发模式下,工作正常。但是,在生产模式中,这会中断:

uninitialized constant Staff::StaffController

其他问题,例如某些帮助程序在Staff命名空间中呈现错误。

为什么开发和生产模式在这种情况下的行为有所不同,我该怎么做才能解决它?

3 个答案:

答案 0 :(得分:1)

如果在生产和开发模式下运行rake routes会发生什么?

这可能会帮助您将其缩小到(如提及的那样)托管堆栈与框架/代码问题。

答案 1 :(得分:0)

您的生产环境是什么样的?乘客/阿帕奇?最新版本(2.2.4)?像这样的不一致对我来说通常是一个堆栈问题而不是代码问题,所以从那里开始就不会有什么坏处。

答案 2 :(得分:0)

看来你已经解决了这个问题,但有两点需要注意:

  1. 使用Apache与Webrick / Mongrel时会发生一些微妙的变化(最佳做法是在本地实际设置Apache + Passenger进行开发

  2. 在某些部署情况下,当您实现条件路由并同时进行数据库迁移时,您可以在脚中射击(最佳做法是在检查数据库迁移时包装条件路由这可能意味着您需要在加载和迁移后重新启动服务器,但仍然比替代方案更好。