Spec虚拟无识别模块

时间:2014-05-14 02:09:06

标签: ruby-on-rails ruby module require

我有一个设置,我想将在引擎内部和外部使用的代码分解为模块。但是,当运行引擎spec虚拟测试时,虚拟无法在我的主应用程序的lib文件夹中找到该模块(我认为它的范围是引擎的目录)并且rake aborts。

这是一般设置:

这将位于主应用程序的lib文件夹(my_module.rb)中:

module MyModule
   def module_function
   end
end

这将位于主应用程序的模型目录中:

require 'my_module'
class myModel
  include MyModule
  module_function()
end

这将在引擎中:

require 'my_module' 
class MyEngineModel
  include myModule
  module_function() 
end

然而,在假人的耙子设置上,它疯狂地给了我一个load error的引擎规格:

rake aborted!
LoadError: cannot load such file -- my_module

1 个答案:

答案 0 :(得分:0)

引擎在主应用程序之前加载。因此,如果您的模块要在引擎和应用程序中使用,我建议您将其放在Engine的lib/文件夹中,而不是应用程序的lib文件夹中。

您可以找到更多信息here