特别是ruby-oci8Ruby .我安装了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

如果要加载库,我肯定会支持最后一种方法,而不仅仅是确认它是否存在于我的系统中.我错过了什么?

推荐答案

我的问题有两个:

1) 将gem命令语法与配置中使用的语法混淆.rails环境中的gem行.rb配置文件.

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环境.rb文件是:

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

感谢http://www.ruby-forum.com/topic/109100岁的人们

Ruby相关问答推荐

Ruby迭代器与函数.返回函数的第一个值,而不交互整个列表

如何使用Ruby中的时区函数S标准库?

Ruby 扁平化 JSON 对象或哈希

ruby:比较两个单词并从中提取不常见的字母

是否可以在 Ruby 中使用正则表达式匹配字符串\b(退格字符)?

在Ruby中按字母顺序对数组中的数组进行排序?

Ruby注入daisy链?

我可以在 Ruby 的 heredoc 中访问变量吗?

检测 ruby​​ 是否在 Windows 上运行的正确方法是什么?

如何从 Ruby 中的线程返回值?

如何调试/显示使用 RestClient 发送的请求

如何在 Ruby 中初始化 Hash 中的数组

对具有相同键的 2 个哈希属性求和

如何期望 RSpec should_receive 的一些(但不是全部)参数?

你喜欢哪种风格的 Ruby 字符串引用?

Ruby 被空格分割

如何设置方法测试中使用的私有实例变量?

Ruby 中的标准文件命名约定

如何在 Ruby 的 IRB 中启用自动完成

从Ruby中的子类方法调用父类中的方法