Ruby on rails RubyonRails-使用来自不同目录的模块

Ruby on rails RubyonRails-使用来自不同目录的模块,ruby-on-rails,module,directory,require,Ruby On Rails,Module,Directory,Require,这是一个非常基本的问题,但我找不到确切的答案 在我的开发环境中,trunk/app/models/parsers/my_file.rb中有以下代码: def initialize ... @logger = Utils::SingletonLogger.get_logger @logger.debug("Instantiating my_file object") end 它运行良好 但是当我将它部署到测试环境中时(所有代码都应该是相同的,但是如果有差异,我不确定从哪里开始查找),

这是一个非常基本的问题,但我找不到确切的答案

在我的开发环境中,trunk/app/models/parsers/my_file.rb中有以下代码:

def initialize
  ...
  @logger = Utils::SingletonLogger.get_logger
  @logger.debug("Instantiating my_file object")
end
它运行良好

但是当我将它部署到测试环境中时(所有代码都应该是相同的,但是如果有差异,我不确定从哪里开始查找),Rails抱怨说它找不到Parsers::MyFile::Utils。我要使用的Utils模块位于app/lib/my_Utils.rb中。这让我觉得Rails正在为parsers子目录中的代码创建某种名称空间,并且只在那里查找Utils模块,但我还没有弄清楚如何使它为我工作。是否有一些主要的应用程序级前缀可用于指定以查看当前目录结构之外的内容

我已尝试添加
require'my_utils'
require\u relative'../../../lib/my_utils.rb'
。前者找不到文件,后者只是抛出与我没有任何要求时相同的错误。我不确定我是否需要这个

无论如何,我显然不太明白如何在不同的目录中引用模块中的代码,我不明白rails何时/为什么在某些时候/环境中需要显式路径,而在其他情况下不需要显式路径,我也不知道如何使rails在当前文件之外查看代码。如有任何帮助,我们将不胜感激

哦,我正在使用Ruby 1.9.3和rails 3.2.1

编辑:它刚刚开始工作,没有对application.rb或环境文件进行任何更改。它在当前版本中甚至没有要求。有什么明显的原因让它一开始不工作,然后在另一个服务器重新启动后工作?(我很确定我在代码进入后重新启动了它——我不认为我之前忘记了这么做。)


无论如何,感谢您的帮助-我真的非常感谢。

您可以手动添加要包含在application.rb中的目录。您可能希望确保在application.rb或test.rb配置文件中有此自动加载路径,您的路径可能特定于development.rb文件

config.autoload_paths += %W(#{config.root}/lib/)

您的Gemfile for dev与test environment中有不同的Gem吗?没有,本地Gemfile与测试Gemfile看起来完全相同。我指的是Gemfile中的
:development
:test
环境。哦,对不起。我在Gemfile中看到的唯一一个特定于环境的东西是一条注释,即生产中不需要一组资产Gem。我想,如果测试环境认为它是产品,那可能会有所不同。有没有一个好的方法来测试它?看到了吗