具体来说,红宝石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
如果加载库,我肯定会赞成这种最后的方法,而不仅仅是确认它存在于我的系统中。我错过了什么?
答案 0 :(得分:70)
我的问题有两个:
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'
的人们
答案 1 :(得分:1)
尝试以下语法(而不是require):
require_gem 'RMagick' , '=1.10'
require_gem 'RMagick' , '>=1.10'
require_gem 'rake', '>=0.7.0', '<0.9.0'