未定义的方法`reduce'

时间:2009-11-29 01:55:17

标签: ruby-on-rails ruby

所以在我的本地应用程序中,一切都很好。

两者都运行Ruby 1.8.7和Rails 2.3.5,但是我部署的应用程序出现以下错误。

ActionView::TemplateError (undefined method `reduce' for #<Class:0x7fbbd034d760>)

我能想到的唯一区别是操作系统,我正在开发OS X并部署到Linux。

但事实并非如此。 <{1}}以任何不同的方式工作时无法在线找到任何内容。

关于我如何调试这个的任何想法?

更新

出于好奇,我已将ActiveSupport gem更新为2.3.5(activesupport-2.3.5),但这似乎不起作用。

这是视图中获取错误的行:

reduce

3 个答案:

答案 0 :(得分:3)

检查部署ruby版本。在1.8.7之前,reduce没有添加到Enumerable中。您也可以尝试使用注入。它与reduce相同,只是名称不太明显。

答案 1 :(得分:1)

reduceinject的同义词。所以你应该把它改成inject

答案 2 :(得分:1)

如果你想要运行多个版本的Ruby,或者只是想在不同的版本上试一试,看看有什么破坏你可以试试rvm。

sudo gem install rvm
rvm install 1.8.7
rvm install 1.9.1
rvm use 1.9.1

这将为ruby和所有ruby相关程序(如irb)设置默认ruby为1.9.1。然后你可以很容易地推断它是否只是一个1.8.6 - &gt; 1.8.7事情或者它是否更大。

当您的服务器锁定到1.8.6时非常方便,但是您希望看到当您转到1.8.7甚至1.9时会发生什么。