3

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

ActionView::Template::Error(找不到文件'reset' 2012-06-13T02:31:43+00:00 app[web.1]:(在 /app/app/assets/stylesheets/application.css :4)):

(application.css 包含行 *= 需要重置)

然后我想运行“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 没有问题。

显示 first.js.coffee 的项目树

应用程序.js

4

2 回答 2

3

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

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

我还建议您在生产环境中本地尝试资产预编译RAILS_ENV=production bundle exec rake assets:precompile。看看你有没有错误。

最后,您可能需要检查这些不同的链接以找到有用的信息:

于 2012-06-18T18:21:47.310 回答
2

我遇到了几乎完全相同的问题和样式表编辑未生效的类似错误......我发现我会编辑似乎被 Heroku 忽略的 css(或在你的情况下对 css 文件的引用)。原来 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 的分支)。

希望有帮助!

于 2012-06-17T20:26:38.070 回答