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没有问题。

项目树显示first.js.coffee

的application.js

首先,我建议您在本地计算机上以生产模式运行应用程序。 存在一些错误(在资产中,但我也在路由中发现了一些),这些错误只会对生产环境产生影响,因此您可以在本地测试和修复它们,而不必从生产服务器执行此操作。

关于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之前预编译你的资产目录。 你会这样做如下:

  1. 预编译资产目录: rake assets:precompile
  2. 将项目文件添加到当前的Git存储库: git add .
  3. 检查文件更改到当前Git存储库: git commit -am "description goes here"
  4. 将文件推送到Heroku: git push heroku master (将’master’替换为你希望推送到Heroku的分支)。

希望有所帮助!