获取未定义的方法';反对';Ruby dbi Gem中的错误

获取未定义的方法';反对';Ruby dbi Gem中的错误,ruby,dbi,Ruby,Dbi,我已经安装了ruby dbi-0.4.3,正在尝试连接到SQL Server数据库。gem安装没有问题。deprecate方法正在作为gem一部分的Date.rb文件中使用。提前感谢您的帮助。 克里斯 这是我的密码: require 'dbi' $LOAD_PATH.unshift(File.dirname(__File__)) oConn = DBI.connect('DBI:ADO:Provider=SQLNCLI;Data Source="UPSTAIRS\SQLEXPRESS";

我已经安装了ruby dbi-0.4.3,正在尝试连接到SQL Server数据库。gem安装没有问题。deprecate方法正在作为gem一部分的Date.rb文件中使用。提前感谢您的帮助。 克里斯

这是我的密码:

require 'dbi'
$LOAD_PATH.unshift(File.dirname(__File__))

oConn = DBI.connect('DBI:ADO:Provider=SQLNCLI;Data Source="UPSTAIRS\SQLEXPRESS";
                      Integrated Security=SSPI;Initial Catalog=SQLClass')

oConn.disconnect if dbh
以下是我得到的错误:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils/date.rb:57:in `<class:Date>': undefined method `deprecate' for DBI::Date:Class (NoMethodError)
  from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils/date.rb:7:in `<module:DBI>'
  from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils/date.rb:1:in `<top (required)>'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils.rb:56:in `<top (required)>'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  from C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi.rb:50:in `<top (required)>'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `require'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
  from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
  from C:/SQLClassScripts/RubyScripts/LoadData/lib/LoadDataMain.rb:4:in `<main>'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils/date.rb:57:in`':dbi::date:Class的未定义方法“deprecate”
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils/date.rb:7:in`'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils/date.rb:1:in`'
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'require'
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'require'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi/utils.rb:56:in`'
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'require'
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in'require'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/dbi-0.4.3/lib/dbi.rb:50:in`'
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in'require'
来自C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in“rescue in require”
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in'require'
来自C:/SQLClassScripts/RubyScripts/LoadData/lib/LoadDataMain.rb:4:in`'

我不知道
dbi
,但是
deprecate
-方法似乎来自

做一个

gem 'deprecated' 
require 'deprecated' 

在代码帮助的开头?

我认为这里的问题是ruby dbi库已经过时了。上一次接触图书馆是在3年前。您最好使用一个gem,它提供了类似的功能,并正确定义了依赖项。一个选项是

,正如knut所写的“dbi”需要“不推荐的”gem,但具体版本是-2.0.1。你可以在第38页看到这个


您可以使用4个空格缩进代码和输出,这样更易于阅读。(我编辑了您的代码)正如其他人所指出的,dbi库并没有得到很好的维护。github存储库中有许多挂起的拉取请求。如果您开始使用dbi,您可能会调查这些拉取请求中的一个是否能解决您的问题,然后只需构建您自己的gem版本正如其他人所说:dbi已经过时了。我也推荐使用sequel。我要试试这个-我会回来的-谢谢
begin
    require "rubygems"
    gem "deprecated", "= 2.0.1"
rescue LoadError
end