如何直接从其路径中获取 Ruby gem?

How to require a Ruby gem directly from its path?

为了使用 ruby​​zip,我安装了 gems:

gem install --local rubyzip-1.1.7.gem  
gem install --local zip-zip-0.3.gem

在我的代码中,我使用 require 方法调用 gems:

  require 'zip/zip' 
  require 'zip/filesystem'

我想使用 require 直接从我机器上的位置加载 gems。

我想要这样的东西:

 require 'path_to_my_zip_gem'

其中 path_to_my zip_gem 包含 gem 个文件

基本上,这是因为 require 方法从 $:$LOAD_PATH

中列出的路径按名称加载文件

"If the filename does not resolve to an absolute path, it will be searched for in the directories listed in $LOAD_PATH ($:)."

http://ruby-doc.org/core-2.2.2/Kernel.html#method-i-require

如果您想从 "local" 路径中获取 gem,那么 require_relative 方法可能会有所帮助,因为您可以指定一个相对于所需文件路径的路径。查看官方文档了解更多详情:

http://ruby-doc.org/core-2.2.2/Kernel.html#method-i-require_relative

最简单的答案是

Gem::Specification.find_by_name("GEM_NAME_HERE").full_gem_path

示例

> require File.join(Gem::Specification.find_by_name("railties").full_gem_path, "lib/rails/code_statistics.rb")
=> true