我最近遇到了一个奇怪的问题或者Rails 3,可能是因为新的rubygems 1.5更新了。基本上当我使用乘客3.0.2将我的程序部署到nginx时,我的生产日志中立即有500页和这样的问题:
ActionView::Template::Error (couldn't parse YAML at line 105 column 13):
10: </div>
11: <% end %>
12: <div class="field">
13: <%= f.label :name %> <%= f.text_field :name %>
14: </div>
15: <div class="field">
16: <%= f.label :password %> <%= f.password_field :password %>
app/views/sessions/new.html.erb:13:in `block in _app_views_sessions_new_html_erb___4159562374589718885_19217640_4456777064017176818'
app/views/sessions/new.html.erb:5:in `_app_views_sessions_new_html_erb___4159562374589718885_19217640_4456777064017176818'
看起来它在环境中缺少某些内容,因此它无法识别我的所有form_for元素。基本上该页面只是一个简单的登录页面,包含2个字段 - 名称和密码。对于具有表单的其他页面,也会出现此问题,但仅限于生产环境中。在开发环境中,它完全正常工作。我已将所有宝石升级到最新版本,包括rails 3.0.4,但这看起来与此问题并不完全相关。我也经常在我的VMware BEFORE gem 1.5上将相同的东西部署到ubuntu上,现在一切都还不错,但新部署没有回头路。
我已经将它部署到运行最新ubuntu的2台机器上,并且两台机器都有这样的错误。 Nginx和乘客按标准步骤安装。显然,有了这个问题,该网站永远无法运行。任何人都可以为此提供任何错误修复?非常感谢,如果可以的话!
PS:我写的登录页面基本上来自这里: http://railstutorial.org/chapters/sign-in-sign-out#top
答案 0 :(得分:10)
我在config / boot.rb文件中添加了以下两行,问题解决了。
require 'yaml'
YAML::ENGINE.yamler= 'syck'
答案 1 :(得分:1)
我遇到了同样的问题。其实我只需要第一行:
require 'yaml'
无需专门设置YAML :: Engine。
答案 2 :(得分:0)
对于yaml语法选项(例如TextMate中的“查看/显示不可见”)的问题可能对定位语法问题非常有帮助,yaml对此非常敏感。 在我的情况下,我只需要在所有语言环境文件中用空格替换所有选项卡。 另请注意,如果您在同一级别上没有同名的节点。