我正在学习Rails,并阅读有关使用CodeRay在您的页面中突出显示可爱的语法的信息。当我使用rails server
时,它很好,一切都很笨拙,但是当我尝试部署到 Heroku 时,我得到了有用的"出现问题"页面。根据日志,ActionView::Template::Error (coderay.css isn't precompiled):
.所以我想暂时从我的 Rails 应用程序中删除 CodeRay。
我从我的 Gemfile 中删除了 CSS 文件、erb 文件中的链接 CodeRay,运行bundle install
并bundle update
,但我仍然收到同样的错误。
2012-05-27T07:41:22+00:00 app[web.1]: Completed 500 Internal Server Error in 98ms
2012-05-27T07:41:22+00:00 app[web.1]:
2012-05-27T07:41:22+00:00 app[web.1]: 2: <html>
2012-05-27T07:41:22+00:00 app[web.1]: 3: <head>
2012-05-27T07:41:22+00:00 app[web.1]: ActionView::Template::Error (coderay.css isn't precompiled):
2012-05-27T07:41:22+00:00 app[web.1]: 5: <%= stylesheet_link_tag "application", "coderay", :media => "all" %>
2012-05-27T07:41:22+00:00 app[web.1]: 4: <title>RG Simms</title>
2012-05-27T07:41:22+00:00 app[web.1]: 6: <%= javascript_include_tag "application" %>
2012-05-27T07:41:22+00:00 app[web.1]: 7: <%= csrf_meta_tags %>
2012-05-27T07:41:22+00:00 app[web.1]: 8: <link rel="/favicon.ico" alt="gentlemanraptor">
现在,这真的很奇怪。我已经删除了 html.erb 中对 coderay 的stylesheet_link_tag
,完全卸载了实际的 gem,并再次部署到 Heroku,但出现相同的错误。
目前使用 cedar 堆栈和轨道 3.2.3。
我做错了什么吗?
你需要告诉rails预编译coderay.css以及你的其他资产:
# application.rb
config.precompile += %w(coderay.css)
试试看。
如果它仍然不起作用,您可能需要删除 coderay 的样式表链接标签,因为它将在资产预编译期间与您的 application.rb 捆绑在一起。
您需要先在本地编译资产。
看看这里: https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar
在推送到 Heroku 之前尝试以下操作。
RAILS_ENV=production bundle exec rake assets:precompile