Как загрузить драгоценные камни из локального подкаталога? - PullRequest
2 голосов
/ 12 сентября 2011

У меня есть проект (см. https://github.com/marick/growing-oo-software-in-ruby), в котором все самоцветы находятся в локальном каталоге / третьей стороне. Однако в моей среде Ruby 1.9 у меня возникают проблемы с загрузкой гемов для запуска примеров ...

Чтобы понять, что происходит, я хочу узнать о требованиях и использовании рубинов. Для этого я сделал настройки вроде:

   .
   |____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 ]

2 голосов
/ 12 сентября 2011

Когда вы делаете что-то вроде 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"
0 голосов
/ 12 сентября 2011

Попробуйте:

require "rubygems"
Gem.use_paths(nil, Gem.path << "../../env/gem/gems")
require "testgem"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...