Heroku在我的Ruby on Rails应用程序中找不到文件 – 即使它们就在那里?
当我尝试访问我的网站,然后检查我的Heroku日志,我看到这个错误:
ActionView :: Template :: Error(无法找到文件’reset’2012-06-13T02:31:43 + 00:00 app [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时,无法再找到这些文件。 有什么想法吗?
编辑:这是项目树。 (在应用程序之前还有一个目录,这是主项目目录,它还包含config,db,log等)
另一个编辑:.gitignore或.slugignore没有问题。
首先,我建议您在本地计算机上以生产模式运行应用程序。 存在一些错误(在资产中,但我也在路由中发现了一些),这些错误只会对生产环境产生影响,因此您可以在本地测试和修复它们,而不必从生产服务器执行此操作。
关于Heroku上的资产预编译,akjoe给出的解决方案应该导致在git repo中跟踪编译资产:使用此选项,您应该禁用在Heroku上发生的资产预编译并让Rails为您提供资产(设置config.serve_static_assets = true
in你的production.rb
文件)但这不是处理资产管道的最佳方式,因为你失去了一个主要的好处,即释放你的资产申请的铁路应用程序。 为了使它正常工作,你应该设置像heroku解释: 在Rails 3.1+中使用带有Memcached的Rack :: Cache进行静态资产缓存
我还建议您在生产环境中尝试本地资产预编译RAILS_ENV=production bundle exec rake assets:precompile
。 看看你是否有任何错误。
最后,您可能需要查看此不同的链接以查找有用的信息:
- Rails 3.1+ Heroku Cedar上的资产管道
- Railscasts:#279了解资产管道
- 导轨指南
我有几乎完全相同的问题和类似的错误与样式表编辑没有生效…我发现我会编辑css(或在你的情况下引用css文件)似乎被Heroku忽略。 事实certificate,Heroku只引用了public/assets
目录中的样式表。 我清除了这个目录,并且能够使它正常工作。 我后来发现你需要在签入git之前预编译你的资产目录。 你会这样做如下:
- 预编译资产目录:
rake assets:precompile
- 将项目文件添加到当前的Git存储库:
git add .
- 检查文件更改到当前Git存储库:
git commit -am "description goes here"
- 将文件推送到Heroku:
git push heroku master
(将’master’替换为你希望推送到Heroku的分支)。
希望有所帮助!