48

具体的には、ruby-oci8の宝石です。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

ライブラリがシステムに存在することを確認するだけでなく、ライブラリをロードする場合は、この最後のアプローチを間違いなく支持します。私は何が欠けていますか?

4

2 に答える 2

76

私の問題は2つありました。

1)gemコマンドの構文をrailsenvironment.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

rails2.3.xenvironment.rbファイルでの適切な使用法は次のとおりです。

config.gem "ruby-oci8", :version=>'1.0.7'

http://www.ruby-forum.com/topic/109100の人々に感謝します

于 2010-04-22T20:31:53.423 に答える
1

(requireの代わりに)次の構文を試してください。

require_gem 'RMagick' , '=1.10'
require_gem 'RMagick' , '>=1.10'
require_gem 'rake', '>=0.7.0', '<0.9.0'
于 2010-04-22T19:41:59.700 に答える