所以在我的本地应用程序中,一切都很好。
两者都运行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
答案 0 :(得分:3)
检查部署ruby版本。在1.8.7之前,reduce没有添加到Enumerable中。您也可以尝试使用注入。它与reduce相同,只是名称不太明显。
答案 1 :(得分:1)
reduce
是inject
的同义词。所以你应该把它改成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时会发生什么。