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

时间:2015-05-12 10:21:18

标签: ruby gem zip

为了使用rubyzip我安装了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文件

2 个答案:

答案 0 :(得分:1)

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

中列出的路径加载文件
  

“如果文件名没有解析为绝对路径,那么它将是   在$ LOAD_PATH($ :)中列出的目录中搜索。“

     

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

如果您想要从“本地”路径中获取gem,那么require_relative方法可以提供帮助,因为您可以指定相对于需求文件路径的路径。查看官方文档以获取更多详细信息:

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

答案 1 :(得分:0)

最简单的答案是

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