我有一个项目(参见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的子文件?
答案 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"