看来很多人都有类似的问题。我查阅了这篇thread、this和thisarticle等。我发现了很多有关这些问题的主题,但发布的解决方案无法找到明确的解决方案。我目前正在运行 Rails 3.2.8、ruby 1.9.2 和 Heroku stack cedar。
根据其他线程中的建议,当我放置时:
config.assets.initialize_on_precompile = false
在我的/config/application.rb中,
config.serve_static_assets = true
config.assets.precompile += %w( *.js )
在 /config/environments/production.rb 中,以及
gem 'rails_12factor', group: :production
在我的 gemfile 中,推送将成功预编译,但是 Heroku 上的 application.js 文件为空:
移除后
config.assets.precompile += %w( *.js )
来自 /config/production.rb,并运行
RAILS_ENV=production bundle exec rake assets:precompile
使用index.html.erb提交并推送结果尽管application.js存在且非空,但仍无法识别JS,如下所示:
我感觉好像我已经尝试了这些解决方案的所有组合都无济于事。我尚未将应用程序更新到 Rails 4,此时这样做是个好主意吗?
还有其他建议从这里去哪里吗?
页面加载后,只需点击刷新即可加载所有内容,错误就会消失。该应用程序的代码库中没有上述尝试的解决方案。
我遇到了同样的问题,为我解决的方法是在 gemfile 中指定我的 ruby 版本。
ruby '1.9.3'
没有答案,但这可能会有所帮助。我使用下面的选项进行预编译,这意味着仅创建 MD5 版本,这帮助我解决了一些问题。
rake -v --trace assets:precompile:primary RAILS_ENV=production
我也总是在预编译之前执行此操作:
rake assets:clean
此外,请仔细检查 html 中的确切 MD5 名称以及 Heroku 中的文件名。
同样的事情也发生在我身上。当我将 Rails 版本从 3.2.8 更新到 3.2.11 时,它工作了!