Ruby on rails 如何要求app/lib文件夹中的模块在Rails 5中rspec
我把我的模块移到了Ruby on rails 如何要求app/lib文件夹中的模块在Rails 5中rspec,ruby-on-rails,ruby,rspec,ruby-on-rails-5,Ruby On Rails,Ruby,Rspec,Ruby On Rails 5,我把我的模块移到了 app/lib/parsers 文件夹 模型类响应模块方法,但当我尝试 rspec I have issue Failure/Error: include MainModule::Submodule NameError: uninitialized constant ModelName::MainModule module in lib/parsers looks like this Module Parsers Module Parser1 def f
app/lib/parsers
文件夹
模型类响应模块方法,但当我尝试
rspec
I have issue
Failure/Error: include MainModule::Submodule
NameError:
uninitialized constant ModelName::MainModule
module in lib/parsers looks like this
Module Parsers
Module Parser1
def foo
end
end
Module Parser2
def bar
end
end
end
通过这种方式,第一个模型包括第一个解析器
Class Model1 < ApplicationRecord
include Parsers::Parser1
end
Class Model1
第二个也是这样
在Rspec中,要求安装模块的最佳方式是什么
要求这些模块的最佳方式是什么
使用rails的自动加载机制。将您的Parsers::Parser1
放到app/lib/Parsers/Parser1.rb
和Parsers::Parser2
放到app/lib/Parsers/Parser2.rb
。查看模块的全名如何反映其存储位置?rails就是这样找到它的
或者您可以显式地要求该文件
# my_spec.rb
require_dependency Rails.root.join('app', 'lib', 'parsers')
RSpec.describe ...
如果FQN与路径匹配,则应自动加载它们,而无需任何附加步骤。显示一些代码(模块,它所在的路径以及如何包含它)添加了一些代码第二个代码很有用,非常感谢。第一个不是。@zOs0:但是第一个是你应该走的路。rails指南中有一个红色的大警告:“应该很少需要
require\u dependency
。类名和文件路径应该匹配”。