Rufus调度程序语法错误

时间:2014-11-18 02:29:15

标签: ruby oci8

原始代码:

require 'oci8'

SCHEDULER.every '10s', :first_in => 0 do |job|
  begin
    conn = OCI8.new('apps','apps');
    mylist = Hash.new
    conn.exec("select full_name, count(*) from per_all_people_f
               where rownum < 6 group by first_name") do |r|
      mylist[r[0]] = { label: r[0], value: r[1].to_i.to_s }
    end
    send_event('emp-list', { items: mylist.values })
    conn.logoff
  rescue Exception => e
    puts e.message
  end
end

正在运行ruby oratest1.rb会出现以下错误:

oratest1.rb:11: syntax error
      mylist[r[0]] = { label: r[0], value: r[1].to_i.to_s }
                             ^
oratest1.rb:11: syntax error
      mylist[r[0]] = { label: r[0], value: r[1].to_i.to_s }
                                          ^
oratest1.rb:11: syntax error
oratest1.rb:13: syntax error
    send_event('emp-list', { items: mylist.values })
                                   ^
oratest1.rb:13: syntax error
    send_event('emp-list', { items: mylist.values })
                                                   ^
oratest1.rb:17: syntax error
  rescue Exception => e
        ^
oratest1.rb:21: syntax error

2 个答案:

答案 0 :(得分:0)

你可能正在使用ruby 1.8。此哈希语法包含在1.9之后。

要确保,请运行ruby -v并检查输出。

答案 1 :(得分:0)

如果在1.9之前使用ruby,则必须使用以下语法进行哈希:

mylist[r[0]] = { :label => r[0], :value => r[1].to_i.to_s }

您使用的语法在ruby 1.9及更高版本中有效!