尽管安装了rails_12factor gem,但Rails 4资产仍然无法在Heroku中进行预编译

Ter*_*nce 8 ruby-on-rails heroku asset-pipeline ruby-on-rails-4

我最近尝试将我的Rails 3.2.13应用程序升级到新发布的4.0.0并尝试将其部署到Heroku.不幸的是,尽管遵循了这个指南,资产仍然似乎没有正确预编译.当然,我rails_12factor已经添加了gem,我还做了一些事情来将应用程序正确升级到4.0.0.它在开发模式下工作得非常好,我的所有测试仍在通过.但是,它仍然不会在Heroku中显示资产.

我从运行中注意到的一件事heroku run ls public/assets是,Heroku实际上能够预编译资产,app/assets并对cat这些文件执行命令将显示资产的编译版本.但是,如果我在浏览器上访问该文件,我总是得到404.

Heroku真的准备好了Rails 4吗?

编辑:

这是我从3.2.13升级到4所做的事情列表:

  • 删除了Rails 4中不再使用的资产组

  • 轨的更新版本从3.2.134.0.0

  • active_resource/railties从application.rb中删除require行,因为active_resource已从rails中删除为依赖项

  • 更新sass-rails和coffee-rails以使用相应的主分支,因为它使用railties 4.0.0.rc2而不是4.0.0作为依赖

  • 将devise版本更新为3.0.0.rc

  • 添加protected_attributes以简化到Rails 4的过渡,而无需切换到strong_parameters

  • 更改环境配置以添加config.eagerload并删除co​​nfig.whiny_nils以删除弃用警告.

  • 更改confirm()的语法以删除弃用警告

  • 将哈希火箭的哈希语法更改为1.9.3语法

  • 删除auto explain config以删除弃用警告

  • 使用rake rails添加bin目录:update:bin

  • 添加rails_12factorgem以便能够托管到heroku

  • 在Gemfile中为heroku添加ruby版本

编辑2

我想也值得一提的是,Heroku在预编译过程中没有任何错误,它实际上说它在预编译资产方面是成功的,这就是为什么它不起作用的奇怪之处.

Mik*_*del 1

尝试将 Gemfile 中的组中的所有 gem 移至assets主范围。Rails 4 中不再使用资产组,这可能是导致问题的原因。