在将 Ruby Gem 添加到 Gem 文件和 运行 bundle exec file.rb 后,我仍然收到找不到文件的错误

After adding a Ruby Gem to a Gemfile and running bundle exec file.rb, I still get a file not found error

这是在我的 Gemfile 中:

gem "trinsic_service_clients", "~> 1.1"

这是我名为 instantiate_clients.rb

的文件的顶部

require_relative 'trinsic_service_clients

然而,当我 运行 bundle exec ruby instantiate_clients.rb 我仍然得到这个错误:

Traceback (most recent call last):
    1: from instantiate_clients.rb:1:in `<main>'
instantiate_clients.rb:1:in `require_relative': cannot load such file -- /home/runner/DefenselessGrowlingExtraction/trinsic_service_clients (LoadError)

当我输入 bundler exec gem which trinsic_service_clients 时,我得到以下信息:

/home/runner/DefenselessGrowlingExtraction/.bundle/ruby/2.5.0/gems/trinsic_service_clients-1.1.5018/lib/trinsic_service_clients.rb

require_relative 用于代码 in 您的应用程序。它不适用于存储在 gem 中的代码。对于那些你应该使用 require 因为它会通过 $LOAD_PATH 查找所需的文件。

使用 Gemfile 的简单方法是一次加载所有内容:

require 'bundler'

Bundler.require(:default)

这不仅添加了 gem 声明,而且还添加了默认的 require 调用,因为这应该已经 require 您声明的 gem.

还有 require 'bundler/setup' 只添加了加载路径,您仍然需要 require,但如果您不一定需要所有 gem,这有助于最大程度地减少加载时间.

require 'bundler/setup'

require 'trinsic_service_clients'

如果您的 Gemfile 有很多依赖项,但您的脚本 运行 可能只使用其中的一小部分,这会很有用。