Rails应用程序迁移到生产服务器时出现“符号转储格式错误”错误。

19

我刚刚把我的Rails应用从开发环境移植到了部署服务器上。我已经安装了Passenger,但是我想尝试使用rails s来确保一切都运行正常(这是我第一次开发和部署Rails应用程序)。

规格为:Ruby 1.9.3 with RVM、mod_passenger、Rails 3.2.3。所有的东西都安装正确了,我也启用了Apache模块。不过有些东西出了问题(passenger一直显示“错误消息:未知键:class”)。

运行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的代码吗? - sailor
这是它的链接 http://pastebin.com/iAXARraY (我正在使用 Twitter Bootstrap,因此我遵循常见的页面样式) - user1543863
6个回答

46

我有同样的问题。尝试删除你的[app]/tmp目录。似乎是在尝试解码一些损坏的文件。


这对我也是一样的。我想这与升级我的一些 gem 有关。 - mmrobins
3
这对我也起作用了——在编辑器中进行“替换所有文件”后。 - Khiet
通过使用“在文件中全部替换”功能更改某些变量,此错误也被引入到我的应用程序中。它篡改了tmp/cache目录中的文件,从而导致了这个问题。 - Steve
和 Steve 一样,我进行了替换所有并引起了问题。我的具体错误代码是(0x70)。像其他人建议的那样清除 cookie 并没有起作用。这个答案对我有用,尽管我认为我不得不重新启动,因为我遇到了另一个关于我的 JS 库找不到的错误。 - Douglas Drouillard

26
更改一个资源文件从new.js到new.js.coffee时,尝试渲染new.js的视图时出现了以下错误:
ActionView::Template::Error (dump format error for symbol(0x6d))

我想问题与tmp文件有关(感谢本主题中的评论)。 我执行了:

bundle exec rake tmp:clear

然后我就准备好了!


这个对我起作用了(但是,是的,它似乎有点神秘)。 - Peter Bloom

0
这里的问题是我在:assets管道下插入了“haml-rails”,因此它无法在生产环境中找到HAML。
老实说,我很惊讶,仅通过删除javascript_include_tagstylesheet_link_tag,它仍然可以呈现HTML。
顺便说一下,我通过将haml-rails移出assets范围来解决了这个问题。

0

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

我通过运行以下命令解决了这个问题:

bundle exec rake assets:precompile RAILS_ENV=<environment>

然后重新启动服务器。


-1

这看起来不像是乘客的错误,我猜测可能是你的HAML出了问题。尝试移除第8、9和10行,看看是否能够渲染。如果可以,那么你就可以缩小问题范围。


我需要删除所有的 javascript_include_tagstylesheet_link_tag。它可以工作,但是没有任何样式或 js(显然)。这里有什么问题? - user1543863
1
尝试按照以下方法将if ie替换为surround助手:https://dev59.com/YGox5IYBdhLWcg3wl1T4 - Allyl Isocyanate

-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接