3

我最近遇到了一个奇怪的问题或 Rails 3,可能是在新的 ruby​​gems 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 个字段 - 名称和密码。其他带有表单的页面也会出现此问题,但仅在生产环境中。在开发环境中,它完全可以正常工作。我已将所有 gem 升级到最新版本,包括 rails 3.0.4,但它看起来与这个问题不太相关。在 gem 1.5 之前,我也曾经在我的 VMware 上的 ubuntu 上部署相同的东西,现在一切都很好,但是新的部署没有回头路。

我已经将它部署到 2 台运行最新 ubuntu 的机器上,两台机器都有这样的错误。Nginx 和passenger 都是按照标准步骤安装的。显然,有了这个问题,该站点将永远无法运行。任何人都可以为此提供任何错误修复吗?如果可以的话,非常感谢!

PS:我写的登录页面基本上来自这里: http ://railstutorial.org/chapters/sign-in-sign-out#top

4

3 回答 3

10

我在 config/boot.rb 文件中添加了以下两行,问题就解决了。

require 'yaml'
YAML::ENGINE.yamler= 'syck'
于 2011-02-09T16:39:34.817 回答
1

我有同样的问题。其实我只需要第一行:

require 'yaml'

无需专门设置 YAML::Engine。

于 2011-08-31T13:59:34.060 回答
0

对于 yaml 语法选项的问题,如 TextMate 中的“查看/显示不可见”可能非常有助于定位语法问题,yaml 对此非常敏感。在我的情况下,我只需要在所有语言环境文件中用空格替换所有选项卡。另请注意,如果您在同一级别上没有具有相同名称的节点。

于 2012-02-03T13:49:55.267 回答