Bundler:强制它从两个不同的目录加载

时间:2010-09-29 19:15:30

标签: gem bundler

由于我公司的IT要求,任何需要编译的宝石都必须由IT工程师安装,并且任何纯红宝石都安装在项目的子文件夹中。为了满足这些需求,我们将宝石分成了不同的组:

source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'activerecord-oracle_enhanced-adapter', '~> 1.3.1'
gem 'memcache-client', :require => 'memcache'
gem 'builder'
gem 'acts_as_list'

group :development, :test do
  gem 'sqlite3-ruby', :require => 'sqlite3'
  gem 'ruby-debug19', :require => 'ruby-debug'
end

group :native do
  gem 'ruby-oci8'
  gem 'nokogiri'
end

当我们安装时,我们在测试服务器上运行build命令,运行bundle install --without native

这样可以正确安装仅支持ruby版本的宝石。然后,构建服务器从此

修改 .bundle / config 文件
--- 
BUNDLE_PATH: vendor/bundle
BUNDLE_WITHOUT: development:native
BUNDLE_DISABLE_SHARED_GEMS: "1"

到这个

--- 
BUNDLE_PATH: vendor/bundle
BUNDLE_WITHOUT: development

然而,它仍然无法正确加载宝石:

  

timetips1-lm27:〜/ ka $ ./script/rails c tii_test
  在任何来源中都找不到ruby-oci8-2.0.4   尝试运行bundle install

我一直在搜索源代码,试图找到一种方法来强制Bundler使用正常的加载路径,但实际上已经出现并且很短,而且我的大脑因为盯着源代码而被炒了两天。有关如何解决问题的任何想法?

1 个答案:

答案 0 :(得分:0)

事实证明我正在做的一切正确。 IT没有安装ruby-oci8 gem,而是手动编译ruby-oci8库并将其加载到每个服务器上。