问题描述
我从bundle init
开始了一个小项目。实际上,我构建的是应用程序,而不是gem,因此我决定不使用 .gemspec 文件。
我遇到了一个问题,即我无法使用require
来要求位于lib
中的文件。例如,在bundle exec ruby bin/console
上我得到:
无法加载此类文件-new / gem
使用gemspec文件可以工作,因为默认情况下它具有require_paths = ["lib"]
选项,在require "bundler/setup"
之后,您可以使用require
访问位于lib
的文件。
如果我不使用gemspec文件,如何提示邦德勒我希望有可能从require
到lib
?
解决方法
有几种方法:
- 使用
require_relative "../lib/app"
- 在
lib
中的$LOAD_PATH
中添加bin/console
:$LOAD_PATH.unshift "./lib"
- 只需在命令行内联添加即可:
bundle exec ruby -Ilib bin/console
请注意,尽管如果您正在应用中使用require_relative
(并且应该使用),那么lib
并不需要进入{{1} },则只需将$LOAD_PATH
加载到任何地方即可。