为什么我在Ruby 1.8.7中得到“未定义的方法`take for Array”?

时间:2013-04-10 05:58:24

标签: ruby ruby-1.8

我不确定为什么会出现此错误,因为它似乎是Ruby 1.8.7中的数组。

以下是相关代码:

rows.each_with_index do |row, index|
    if (index == 0) then
        log "Found the following slow statements (took over #{slow_query_threshold} seconds):"
    end
    row_data = row.strip().split('|')
    connections = row_data[1].split(', ')
    n_more = '... and #{connections.length - 3} more' if connections.length > 3
    log %{[#{row_data[0]}] on #{connections.take(3).join(', ')} #{n_more}}
end

这给了我这个错误:

2013-04-10T05:36:45.04Z : Found the following slow statements (took over 5.0 seconds):
/myscript.rb:111: undefined method `take' for ["App15(28.39sec)"]:Array (NoMethodError)
     from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `each_with_index'

1 个答案:

答案 0 :(得分:0)

您必须在1.8.6上运行。升级或require 'backports/1.8.7/enumerable/take'