移动到生产服务器的Rails app会出现“符号转储格式错误”错误

我刚刚将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 []错误,但我真的不明白我该怎么做。

等待一些建议,谢谢!

有同样的问题。 尝试删除[app] / tmp目录。 它似乎试图解散一些borked文件。

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

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

我认为这是与tmp文件有关的东西(感谢这个post中的评论)。 我跑了:

 bundle exec rake tmp:clear 

我很高兴去!

这里的问题是我在:assets管道下插入了“haml-rails”,因此它无法在生产环境中找到HAML。

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

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

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

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

 bundle exec rake assets:precompile RAILS_ENV= 

然后重新启动服务器。

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

我有同样的问题,修复是运行git clean -dfx