我在Ruby中开始使用Gem开发时遇到了一些非常基本的问题。
我用这个命令创建了一个新项目。
bundle gem foobar
我现在可以运行
了bundle && bundle exec rake spec
一切都很好。
但是我尝试在我的规范中添加新部件
expect(Foobar::BAR).not_to be nil
然后在./lib/foobar/error.rb
中定义它module Foobar
BAR="bar"
end
它只是找不到这个文件。错误是NameError: uninitialized constant
。我require_relative
spec_helper.rb
home
但这显然不正确或可持续。
我在这里看到了这个问题Missing File in Gem after Build我已将新文件添加到git中。这没有用,直接在gemspec文件中添加文件也无济于事。
整个项目都在https://github.com/ollyjshaw/broken_gem
我做错了什么?它必须是微不足道的,但我看不到它。
答案: 答案在安东尼的评论中 “加载gem时,你不需要你的错误文件:github.com/ollyjshaw/broken_gem/blob/master/lib/foobar.rb#L1” “你将加载你的主模块,该模块将加载它所需的其他模块/类,并在树上运行”
答案 0 :(得分:1)
通常,您将所有类/模块文件添加到spec_helper.rb
文件中的加载路径:
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
require "your_gem"