2010-09-29 55 views
0

由于我公司的IT需求,任何需要编译的gem都必须由IT工程师安装,并且任何纯ruby gems都会安装到项目的子文件夹中。为了满足这些需求,我们分隔我们的宝石成不同的群体:Bundler:迫使它从两个不同的目录加载

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 

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

这正确安装红宝石唯一版本的宝石。此后,构建服务器修改从这个

--- 
BUNDLE_PATH: vendor/bundle 
BUNDLE_WITHOUT: development:native 
BUNDLE_DISABLE_SHARED_GEMS: "1" 

.bundle /配置文件,这

--- 
BUNDLE_PATH: vendor/bundle 
BUNDLE_WITHOUT: development 

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

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

我一直在通过源代码搜寻,试图找到一种方法来强制Bundler使用正常的加载路径,但真的出现和短,我的脑子从盯着源代码两天的油炸。有关如何解决该问题的任何想法?

回答

0

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