2010-09-29 52 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庫並將其加載到每個服務器上。