在将 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
有很多依赖项,但您的脚本 运行 可能只使用其中的一小部分,这会很有用。
这是在我的 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
有很多依赖项,但您的脚本 运行 可能只使用其中的一小部分,这会很有用。