具体的には、Ruby-oci8 gem。 1.0.7と2.0.4の両方をインストールしています。 1.0.7が必要です。
Oci8を要求することはできますが、必要なバージョンを取得できません。
irb(main):001:0> require 'oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "2.0.4"
ファイルへのフルパスを使用する必要がありますが、これは機能しますが、移植性はありません。
irb(main):001:0> require 'C:\Ruby\lib\Ruby\gems\1.8\gems\Ruby-oci8-1.0.7-x86-mswin32-60\lib\oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "1.0.7"
Gemコマンドを使用して必要なバージョンを尋ねることはできますが、実際にライブラリをロードするようには見えません。
irb(main):001:0> gem 'Ruby-oci8', :lib=>'oci8', :version=>'=1.0.7'
=> true
irb(main):002:0> OCI8::VERSION
NameError: uninitialized constant OCI8
from (irb):2
ライブラリがロードされる場合、システムに存在することを確認するだけでなく、この最後のアプローチを間違いなく好むでしょう。私は何が欠けていますか?
私の問題は2つありました。
1)gemコマンドの構文をRails environment.rb構成ファイルのconfig.gem行で使用される構文と混同します。
2)gemコマンドの後にrequireコマンドを発行できない。
スクリプトでの適切な使用法は次のとおりです。
gem 'Ruby-oci8', '=1.0.7'
require 'oci8' # example is confusing; file required (oci8.rb) is not
# same name as gem, as is frequently the case
Rails 2.3.x environment.rbファイルの適切な使用法は次のとおりです。
config.gem "Ruby-oci8", :version=>'1.0.7'
http://www.Ruby-forum.com/topic/1091 の方々に感謝します
(requireの代わりに)次の構文を試してください:
require_gem 'RMagick' , '=1.10'
require_gem 'RMagick' , '>=1.10'
require_gem 'rake', '>=0.7.0', '<0.9.0'