如何在没有gemspec的情况下使用Gemfile将'lib'添加到LOAD_PATH?

问题描述

我从bundle init开始了一个小项目。实际上,我构建的是应用程序,而不是gem,因此我决定不使用 .gemspec 文件。 我遇到了一个问题,即我无法使用require来要求位于lib中的文件。例如,在bundle exec ruby bin/console上我得到:

无法加载此类文件-new / gem

使用gemspec文件可以工作,因为认情况下它具有require_paths = ["lib"]选项,在require "bundler/setup"之后,您可以使用require访问位于lib文件

如果我不使用gemspec文件,如何提示邦德勒我希望有可能从requirelib

解决方法

有几种方法:

  1. 使用require_relative "../lib/app"
  2. lib中的$LOAD_PATH中添加bin/console$LOAD_PATH.unshift "./lib"
  3. 只需在命令行内联添加即可:bundle exec ruby -Ilib bin/console

请注意,尽管如果您正在应用中使用require_relative(并且应该使用),那么lib并不需要进入{{1} },则只需将$LOAD_PATH加载到任何地方即可。