我制作了一个小型应用程序,用户可以在其中登录/退出、创建等等。我使用 mySQL 作为数据库,并且在本地环境中一切正常。但是当我将其部署到heroku并迁移数据库等之后,heroku版本不起作用。当我追踪日志时我得到了这个:
2011-10-20T18:48:22+00:00 app[web.1]: Started GET "/" for 83.233.57.240 at 2011-10-20 11:48:22 -0700
2011-10-20T18:48:22+00:00 app[web.1]: Processing by HomeController#index as HTML
2011-10-20T18:48:22+00:00 app[web.1]: Rendered home/index.html.erb within layouts/application (0.0ms)
2011-10-20T18:48:22+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms
2011-10-20T18:48:22+00:00 app[web.1]:
2011-10-20T18:48:22+00:00 app[web.1]: ActionView::Template::Error (defaults.js isn't precompiled):
2011-10-20T18:48:22+00:00 app[web.1]: 3: <head>
2011-10-20T18:48:22+00:00 app[web.1]: 4: <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>
2011-10-20T18:48:22+00:00 app[web.1]: 5: <%= stylesheet_link_tag "application" %>
2011-10-20T18:48:22+00:00 heroku[router]: GET afternoon-lightning-2154.heroku.com/ dyno=web.1 queue=0 wait=0ms service=7ms status=500 bytes=728
2011-10-20T18:48:22+00:00 app[web.1]: 6: <%= javascript_include_tag :defaults %>
2011-10-20T18:48:22+00:00 app[web.1]: 7: <%= csrf_meta_tag %>
2011-10-20T18:48:22+00:00 app[web.1]: 8: <%= yield(:head) %>
2011-10-20T18:48:22+00:00 app[web.1]: 9: </head>
2011-10-20T18:48:22+00:00 app[web.1]: app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___2280146998680186378_39052620'
2011-10-20T18:48:22+00:00 app[web.1]:
2011-10-20T18:48:22+00:00 app[web.1]:
2011-10-20T18:48:22+00:00 app[web.1]: cache: [GET /] miss
我可以看到它在某个时刻完成了 500 错误,但我不知道为什么。对此有何建议?提前致谢!
检查配置/环境/生产中是否有此内容
# Fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true
基本上你的问题是你的资产没有被自动编译。
更多信息请点击这里:http://devcenter.heroku.com/articles/rails31_heroku_cedar http://devcenter.heroku.com/articles/rails31_heroku_cedar
Edit:
从 Rails 3.1 开始,我们将使用资产管道。这意味着您需要将所有资源(图像、javascript、css)放入app/assets
。在 3.1 之前,会将这些放入public/**/*
.
在开发模式下,Rails 3.1 将自动编译(缩小 JS 和 CSS、在某些情况下将图像转换为 base64 等)所有资产,创建一个小型的版本化包。
对于一个实际的例子,运行bundle exec rake assets:precompile
在你的项目中。看看新建的文件夹public/
。之后您可以安全地删除它。
在生产模式下,这不是自动的。您可以启用资产的自动编译,或手动运行bundle exec rake assets:precompile
部署之前。
有关资产管道的更多信息http://guides.rubyonrails.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.html
Useful: https://github.com/dnagir/guard-rails-assets https://github.com/dnagir/guard-rails-assets
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)