当我尝试访问我的网站,然后检查我的 Heroku 日志时,我看到以下错误:
ActionView::Template::Error(找不到文件“重置”
2012-06-13T02:31:43+00:00 应用程序[web.1]:(在
/app/app/assets/stylesheets/application.css:4)):
(application.css 包含行 *= require reset)
然后我想运行“heroku run bundle exec rake assets:precompile:all”,但这给出了类似的错误:
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
couldn't find file 'main/first.js.coffee'
(in /tmp/build_3428u21sggsoc/app/assets/javascripts/application.js:1)
Tasks: TOP => assets:precompile:primary
(该文件是我的 application.js 所需的第一个文件,其第一行为“//= require main/first.js.coffee”)
总之:我的应用程序在本地运行良好,但是当我部署到 Heroku 时,不再可以找到这些文件。有什么想法吗?
编辑:这是项目树。 (在app目录之前还有一个目录,这是主项目目录,还包含config、db、log等)
另一个编辑:.gitignore 或 .slugignore 没有问题。
首先,我建议您在本地计算机上以生产模式运行应用程序。有一些错误(在资产中,但我也在路由中发现了一些错误),这些错误仅对生产环境产生影响,因此您可以在本地测试和修复它们,而不必从生产服务器执行此操作。
关于 Heroku 上的资产预编译,akjoe 给出的解决方案应该会导致在 git repo 中跟踪已编译的资产:使用此选项,您应该禁用 Heroku 上发生的资产预编译,并让 Rails 为您提供资产(设置config.serve_static_assets = true
在你的production.rb
文件)但这不是处理资产管道的最佳方法,因为你失去了他的主要好处之一,即释放你的 Rails 应用程序对资产的请求。
为了使其正常工作,您应该设置类似 herokuterpret 的东西:在 Rails 3.1+ 中使用 Rack::Cache 和 Memcached 进行静态资源缓存 https://devcenter.heroku.com/articles/rack-cache-memcached-static-assets-rails31
我还建议您在生产环境中本地尝试资产预编译RAILS_ENV=production bundle exec rake assets:precompile
。看看你是否有任何错误。
最后,您可能想检查这些不同的链接以查找有用的信息:
- Heroku Cedar 上的 Rails 3.1+ 资产管道 https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar
- Railscasts :#279 了解资产管道 http://railscasts.com/episodes/279-understanding-the-asset-pipeline
- 导轨指南 http://guides.rubyonrails.org/asset_pipeline.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)