【问题标题】:odd number list for Hash (SyntaxError), though I am using Ruby 1.8.7 hash declaration哈希的奇数列表(SyntaxError),尽管我使用的是 Ruby 1.8.7 哈希声明
【发布时间】:2014-03-11 15:13:21
【问题描述】:

我正在尝试使用“activerecord”和 Ruby 1.8.7 连接到 Oracle 数据库,但在我的 Windows 7 机器上出现以下错误。我搜索了这个问题,发现 1.8 和 1.9 ruby​​ 声明 'Hash' 但是我使用的是 Ruby 1.8.7,我觉得我使用了正确的哈希声明,如果我错了,请纠正我。

C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in `gem_original_require':                       C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhancedadapter-1.5.3/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:917: odd number list for Hash (SyntaxError)
      read_committed:   "READ COMMITTED",
                     ^
C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.5.3/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:917: syntax error, unexpected ':', expecting '}'
      read_committed:   "READ COMMITTED",
                     ^
C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.5.3/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:917: syntax error, unexpected ',', expecting kEND
C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.5.3/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:919: syntax error, unexpected '}', expecting kEND
C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.5.3/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:1471: dynamic constant assignment
  DBMS_OUTPUT_BUFFER_SIZE = 10000  # can be 1-1000000
                           ^
C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.5.3/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:1555: syntax error, unexpected $end, expecting kEND
from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in `require'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:156:in `require'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:521:in `new_constants_in'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:156:in `require'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `establish_connection'
from oracle_conn_testing.rb:5

这就是我的代码的样子

require 'rubygems'
gem "activerecord-oracle_enhanced-adapter"
require 'active_record'

ActiveRecord::Base.establish_connection(
    :adapter => "oracle_enhanced",
    :database => "someurl.net:1523/ABCAD",
    :username => "testing1",
    :password => "testing1")

class TestTable < ActiveRecord::Base
  set_table_name "TABLE_NAME"
  set_primary_key "ID"
end

TestTable.find(:all).each do |tt|
  p tt
end

nac = TestTable.new()

其他信息: 我的机器上有以下宝石: * 本地宝石 *

  • actionmailer (2.3.4)
  • 动作包 (2.3.4)
  • 活动记录 (2.3.4)
  • activerecord-oracle_enhanced-adapter (1.5.3)
  • 活动资源 (2.3.4)
  • 主动支持 (2.3.4)
  • json (1.8.1)
  • mysql (2.9.1 x86-mingw32)
  • 机架 (1.0.1)
  • 导轨 (2.3.4)
  • 耙子 (10.1.1)
  • ruby-oci8 (2.1.7 x86-mingw32)
  • rubygems 更新 (1.4.2)

我使用以下 Rubygems 版本

C:\Users\tester1>gem -v

1.4.2

我尝试使用 OCI8 进行连接,并且能够从 Oracle 数据库中获得响应,因此我的计算机没有连接问题。

irb(main):006:0> OCI8.new('testing1', 'testing1', 'someurl.net:1523/ABCAD').exec('select sysdate from dual') do |r| puts r.join(', ') end
Mon Mar 10 15:09:23 -0400 2014
=> 1

我使用以下链接作为参考: http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/oow10/rubyhol/instructions/rubyrails.htm

【问题讨论】:

  • 看起来activerecord-oracle_enhanced-adapter 最新版本与 Ruby 1.8.7 不兼容,因为其源代码中使用了哈希语法。你可以试试旧版本。您也可以提交修复它的请求。如果你有时间,你可以尝试自己修复它并提交一个拉取请求,但值得检查的是,这个想法没有任何阻力。 Ruby 1.8.7 官方在不同程度上“不受支持”,具体取决于项目。
  • 感谢 Neil,我使用了 1.4.1 版本的 activerecord-oracle_enhancedadapter gem,现在可以正常工作了,非常感谢!

标签: ruby activerecord


【解决方案1】:

错误消息显示您的错误来自 activerecord-oracle_enhancedadapter gem 内部,并且该 gem 具有 Ruby 1.9 样式的哈希。您可能会发现该 gem 的旧版本支持 Ruby 1.8 并切换到该版本。

【讨论】:

  • 感谢大卫,我使用了 1.4.1 版本的 activerecord-oracle_enhancedadapter gem,现在可以正常工作了,非常感谢!
猜你喜欢
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2013-05-14
  • 1970-01-01
  • 2023-03-31
  • 2014-03-03
  • 2021-02-05
相关资源
最近更新 更多