Ruby on rails 3 为什么可以';t rails3在我的应用程序中查找ApplicationController

Ruby on rails 3 为什么可以';t rails3在我的应用程序中查找ApplicationController,ruby-on-rails-3,applicationcontroller,Ruby On Rails 3,Applicationcontroller,在Rails3应用程序中,我不断得到 .gems/activesupport-3.0.0.beta/lib/active\u support/dependencies.rb:459:in'load\u missing\u constant':未初始化的constant ApplicationController(NameError) 即使app/controllers/application\u controller.rb存在且有效。问题出在哪里可能有几个原因,但让我产生问题的原因是我的主目录中

在Rails3应用程序中,我不断得到

.gems/activesupport-3.0.0.beta/lib/active\u support/dependencies.rb:459:in'load\u missing\u constant':未初始化的constant ApplicationController(NameError)


即使
app/controllers/application\u controller.rb存在且有效。问题出在哪里

可能有几个原因,但让我产生问题的原因是我的主目录中有一个
config.ru
文件:

Rails3试图找出应用程序的根目录在哪里。这样做的逻辑是开始查找目录
。/railties/lib/rails/application
,然后使用
config.ru
沿着路径查找目录,并假设该目录是应用程序根目录-如果未找到,则当前工作目录是应用程序根目录

如果您的Gems安装在home dir的子目录中(RVM、本地Gems和Bundler执行此操作),那么在某一点上,这将检查home dir中是否存在
config.ru
。如果存在,它将尝试从您的主目录加载应用程序


解决方案是在home dir中没有
config.ru
,另一个解决方案是在应用程序的根目录中有一个引导Rails应用程序的有效config.ru文件。