【发布时间】:2018-06-27 01:03:40
【问题描述】:
我有一个名为private_lib 的宝石。
文件lib/private_lib.rb 包含以下内容:
require 'private_lib/version'
require 'private_lib/handicap'
require 'private_lib/traversal_cap'
module PrivateLib
end
lib/private_lib/handicap.rb 文件包含以下内容
# module for handicap functions
class Handicap
include TraversalCap
-- other code
end
文件lib/private_lib/traversal_cap.rb 包含以下内容
module TraversalCap
def some_method
end
-- other code
end
我还有一个测试文件spec/handicap_spec.rb,其中包含以下内容
require "spec_helper"
describe Handicap do
include TraversalCap
-- some tests that access the ```Handicap``` class
-- some tests that access directly the traversal_cap some_method.
end
当我运行rspec spec/handicap_spec 时,出现以下错误
private_lib/lib/private_lib/handicap.rb:3:in `<class:Handicap>': uninitialized constant Handicap::TraversalCap (NameError)
from private_lib/lib/private_lib/handicap.rb:2:in `<top (required)>'
为什么障碍类看不到 traversal_cap 模块?
【问题讨论】:
-
嗨@Obromios 这是因为您在
handicap下方需要traversal_cap,但是您在障碍中包含了traversal_cap,因此它无法找到该模块。解决方案是你应该这样做:require 'private_lib/version' require 'private_lib/traversal_cap' require 'private_lib/handicap' module PrivateLib end