我创建了一个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
答案 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才引入它。我猜有些代码被错误地向后移植了。