Heroku上的Rails 3.2资产编译问题

prdp8dxp  于 9个月前  发布在  其他
关注(0)|答案(3)|浏览(70)

似乎很多人都有类似的问题。我参考了threadthis和这篇文章,以及其他。我已经找到了很多关于这些问题的主题,但发布的解决方案一直无法找到一个明确的解决方案。我目前运行的是rails 3.2.8和ruby 1.9.2,以及Heroku stack cedar。

我有两个主要的相关问题:

1)我的项目正在将一些资产(不是全部)推给heroku。#

根据其他线程的建议,当我放置:

config.assets.initialize_on_precompile = false

在my /config/application.rb中,

config.serve_static_assets = true
    config.assets.precompile += %w( *.js )

在/config/environments/production.rb中,

gem 'rails_12factor', group: :production

在我的gem文件中,push将成功预编译,但是Heroku上的application.js文件为空:

2)推送前的预编译成功将JS放到Heroku上,但不再被识别。#

取出后

config.assets.precompile += %w( *.js )

从/config/production.rb,并运行

RAILS_ENV=production bundle exec rake assets:precompile

使用index.html.erb提交和推送结果**,尽管application.js存在且非空**,但无法识别JS,如下所示:

我觉得好像我已经尝试了所有这些解决方案的组合都无济于事。我还没有将应用程序更新到Rails 4,这是一个好主意吗?
还有其他建议吗?

奇怪的是,在我的另一个Rails3.2应用程序中,我只在第一次访问#时得到一个类似的错误

一旦页面加载,只需点击刷新加载所有内容,错误就会消失。此应用程序在其代码库中没有上述尝试的解决方案。

z3yyvxxp

z3yyvxxp1#

我也遇到了同样的问题,解决这个问题的方法是在gem文件中指定我的ruby版本。

ruby '1.9.3'
rkue9o1l

rkue9o1l2#

没有答案,但这可能会有所帮助。我使用下面的选项进行预编译,这意味着只创建MD5版本,这帮助我修复了一些问题。

rake -v --trace assets:precompile:primary RAILS_ENV=production

我也总是在预编译之前这样做:

rake assets:clean

另外,仔细检查html和heroku中文件名中的确切MD5名称。

fd3cxomn

fd3cxomn3#

我也是。当我将Rails版本从3.2.8更新到3.2.11时,它工作了!

相关问题