如何直接从它的路径需要一个Ruby宝石?(How to require a Ruby gem dir

2019-10-23 02:07发布

为了与rubyzip工作,我安装了宝石:

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

在我的代码调用使用需要方法的宝石:

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

我想使用需要直接从他们的位置加载在我的机器上的宝石。

我想财产以后这样的:

 require 'path_to_my_zip_gem'

凡path_to_my zip_gem包含宝石文件

Answer 1:

基本上,这是因为require从上市路径方法加载的文件的名字$:$LOAD_PATH

“如果文件名不能解析为一个绝对路径,将在$ LOAD_PATH($ :)中列出的目录搜索。”

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

如果你想要求从“地方”路径的宝石则require_relative方法可以帮助,因为你可以指定相对于需要文件的路径的路径。 看更多详细信息,官方文档:

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



Answer 2:

该simpliest答案

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


文章来源: How to require a Ruby gem directly from its path?
标签: ruby gem zip