私の会社の IT 要件により、コンパイルが必要な gem は IT エンジニアがインストールする必要があり、純粋な ruby gem はプロジェクトのサブフォルダーにインストールされます。これらのニーズを満たすために、宝石をさまざまなグループに分けました。
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
これにより、Ruby のみのバージョンの gem が適切にインストールされます。その後、ビルド サーバーは、これから .bundle/configファイルを変更します。
---
BUNDLE_PATH: vendor/bundle
BUNDLE_WITHOUT: development:native
BUNDLE_DISABLE_SHARED_GEMS: "1"
これに
---
BUNDLE_PATH: vendor/bundle
BUNDLE_WITHOUT: development
ただし、まだ gem を正しくロードできません。
timetips1-lm27:~/ka$ ./script/rails c tii_test
どのソースにも ruby-oci8-2.0.4 が見つかりませんでした を
実行してみてくださいbundle install
。
Bundler に通常のロード パスを強制的に使用させる方法を見つけようとして、ソース コードを精査してきましたが、実際には思いつきませんでした。ソース コードを 2 日間凝視したことで、私の脳は焼き尽くされました。問題を解決する方法についてのアイデアはありますか?