Heroku在我的Ruby on Rails应用程序中找不到文件 - 即使它们就在那里?

时间:2012-06-13 02:36:36

标签: ruby-on-rails heroku asset-pipeline

当我尝试访问我的网站时,请检查我的Heroku日志,我看到了这个错误:

  

ActionView :: Template :: Error(找不到文件'reset'   2012-06-13T02:31:43 + 00:00 app [web.1] :( in   /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没有问题。

project tree showing first.js.coffee

application.js

2 个答案:

答案 0 :(得分:3)

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

关于Heroku上的资产预编译,akjoe给出的解决方案应该导致在git repo中跟踪编译的资产:使用此选项,您应该禁用在Heroku上发生的资产预编译并让Rails为您提供资产(设置{{1在你的config.serve_static_assets = true文件中)但这不是处理资产管道的最佳方式,因为你失去了一个主要的好处,即释放你的资产请求的rails应用程序。 为了使其正常工作,您应该设置类似heroku解释的内容:Using Rack::Cache with Memcached for Static Asset Caching in Rails 3.1+

我还建议您在生产环境production.rb中本地尝试资产预编译。看你是否有任何错误。

最后,您可能需要查看此不同的链接以查找有用的信息:

答案 1 :(得分:2)

我有几乎完全相同的问题和类似的错误,样式表编辑没有生效...我发现我会编辑css(或在你的情况下引用css文件)似乎被Heroku忽略。事实证明,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(替换 你希望推向Heroku的分支的“主人”。
  5. 希望有所帮助!