NoMethodError:未定义的方法`[]'在Ruby 1.8.7上运行时在Rails中

时间:2014-04-29 22:56:35

标签: ruby-on-rails ruby

我创建了一个demo rails应用程序并为Post模型生成了脚手架。然后当我尝试运行rake时,集成测试失败并显示以下错误消息:

NoMethodError: undefined method `[]' for #<Enumerable::Enumerator:0xb68278a8>

如何让demo rails应用程序运行?

我正在尝试创建一个镜像旧生产服务器的开发环境,所以我使用了一堆旧版本。我正在使用Ruby 1.8.7跟踪Rails 2.0.2上的a tutorial

创建和测试演示应用程序的命令如下:

rails blog
cd blog
./script/generate scaffold Post title:string body:text
rake db:migrate
rake

1 个答案:

答案 0 :(得分:0)

我发现了一个forum post和一个blog post,将其描述为Ruby 1.8.7中的一个错误。他们建议使用类似的修补程序,因此我使用以下代码创建了一个新文件blog/config/initializers/ruby187_compat.rb

unless '1.9'.respond_to?(:force_encoding) 
    String.class_eval do 
        begin 
            remove_method :chars 
        rescue NameError 
            # OK
        end 
    end 
end

现在测试通过了。

看起来Ruby 1.8.7中的String类有一个new method chars()以某种方式调用the force_encoding() method,直到Ruby 1.9.1才引入它。我猜有些代码被错误地向后移植了。