【问题标题】:Rails app moved to production server gives "dump format error for symbol" error移至生产服务器的 Rails 应用程序出现“符号转储格式错误”错误
【发布时间】:2012-05-20 03:25:25
【问题描述】:

我刚刚将我的 Rails 应用程序从开发服务器移到了部署服务器。 我已经安装了乘客,但我想尝试使用 rails s 以确保一切正常(这是我第一次开发和部署 Rails 应用程序)。

规格是:带有 RVM 的 Ruby 1.9.3、mod_passenger、Rails 3.2.3。所有安装正确,我还启用了 Apache 模块。顺便说一句,出了点问题(乘客一直说“错误消息:未知键:类”。)

运行 rails s 会出现上面列出的奇怪错误 dump format error for symbol(0x45)

Processing by Devise::SessionsController#new as HTML
  Rendered devise/_links.haml (2.2ms)
  Rendered devise/sessions/new.html.haml within layouts/application (11.8ms)
Completed 500 Internal Server Error in 110ms

ActionView::Template::Error (dump format error for symbol(0x45)):
    8:     / HTML5 shim, for IE6-8 support of HTML elements
    9:     /[if lt IE 9]
    10:       = javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js"
    11:     = stylesheet_link_tag "application", :media => "all"
    12:     /%link(href="images/favicon.ico" rel="shortcut icon")
    13:     /%link(href="images/apple-touch-icon.png" rel="apple-touch-icon")
    14:     /%link(href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon" sizes="72x72")
  app/views/layouts/application.html.haml:11:in `_app_views_layouts_application_html_haml__3524679841439843142_22055600'

这是什么意思?谷歌搜索似乎是一个 flash[] 错误,但我真的不明白我应该在这里做什么。

等待一些建议,谢谢!

【问题讨论】:

  • 能贴一下application.html.haml的代码吗?
  • 这里是pastebin.com/iAXARraY(我使用的是twitter bootstrap,所以我遵循了一个通用的页面样式)

标签: ruby-on-rails ruby ruby-on-rails-3 deployment passenger


【解决方案1】:

这看起来不像是乘客错误,我猜你的 HAML 有问题。尝试删除 8、9 和 10,看看它是否呈现。如果是这样,那将让您缩小问题范围。

【讨论】:

  • 我需要删除所有javascript_include_tagstylesheet_link_tag。它可以工作,但没有任何样式或 js(显然)。这里有什么问题?
  • 尝试使用环绕助手替换 if ie:stackoverflow.com/questions/9107681/…
【解决方案2】:

这里的问题是我在:assets管道下插入了“haml-rails”,所以在生产环境中找不到HAML。

说实话,我很惊讶仅删除 javascript_include_tagstylesheet_link_tag 它仍然呈现 html。

顺便说一句,我通过将haml-rails 移出assets 范围来修复它。

【讨论】:

    【解决方案3】:

    当我从资产中删除一堆未使用的 .coffee 文件时,我遇到了同样的问题。

    我通过运行解决了这个问题:

    bundle exec rake assets:precompile RAILS_ENV=<environment>
    

    然后重启服务器。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,解决方法是运行git clean -dfx

      【讨论】:

        【解决方案5】:

        遇到了同样的问题。尝试删除您的 [app]/tmp 目录。它似乎正在尝试解组一些 borked 文件。

        【讨论】:

        • 这也是给我的。我认为这与升级我的一些宝石有关。
        • 这对我也有用 - 在编辑器中“替换所有文件”之后。
        • 通过使用“全部替换文件”功能更改一些变量,这个错误也被引入我的应用程序。它篡改了 tmp/cache 目录中的文件,造成了这个问题。
        • 与史蒂夫类似,我做了一个全部替换并导致问题。我的具体错误代码是(0x70)。按照其他人的建议清除 cookie 不起作用。这个答案对我有用,尽管我相信我必须重新启动,因为我遇到了另一个关于找不到我的 JS 库的错误。
        【解决方案6】:

        将资产从 new.js 更改为 new.js.coffee,并在尝试渲染试图渲染 new.js 的视图时收到此错误:

        ActionView::Template::Error (dump format error for symbol(0x6d))
        

        我认为这与 tmp 文件有关(感谢该线程中的 cmets)。我跑了:

        bundle exec rake tmp:clear
        

        我很高兴去!

        【讨论】:

        • 这对我有用(但是,是的,它看起来有点神秘。)
        猜你喜欢
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多