如何从本地子目录加载gem?

时间:2011-09-12 16:27:59

标签: ruby rubygems

我有一个项目(参见https://github.com/marick/growing-oo-software-in-ruby),其中Gems都在本地目录/第三方之下 但是,在我的Ruby 1.9环境中,我在加载gems以运行示例时遇到问题......

要了解什么是故事,我想了解rubygems的要求和用法。为此,我做了一个设置:

   .
   |____env
   | |____gem
   | | |____gems
   | | | |____testgem.rb
   |____sandbox.rb
   |____src
   | |____foo
   | | |____foo.rb

如何使用沙箱实际需要testgem.rb并使其可以访问foo.rb? 有像flexmock这样的宝石的特殊情况。 假设testgem.rb看起来像:

   require 'flexmock/base'
   require 'flexmock/test_unit_integration'

foo.rb如何访问testgem.rb的子文件?

2 个答案:

答案 0 :(得分:2)

当您执行require 'foo'之类的操作时,Ruby会在loadpath中查找此源文件。

您可能会对本文http://weblog.rubyonrails.org/2009/9/1/gem-packaging-best-practices

感兴趣

您的loadpath只是一个数组,在1.9中别名为$: - 您可以这样添加:

$:.unshift File.expand_path("../../env/gem/gems", __FILE__)
require "testgem"

答案 1 :(得分:0)

尝试:

require "rubygems"
Gem.use_paths(nil, Gem.path << "../../env/gem/gems")
require "testgem"
相关问题