我最近尝试将我的 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 中使用
将 rails 的版本从 更新
3.2.13
为4.0.0
从 application.rb中删除 require 行,
active_resource/railties
因为 active_resource 作为依赖项从 rails 中删除更新 sass-rails 和 coffee-rails 以使用它们对应的主分支,因为它使用 railties 4.0.0.rc2 而不是 4.0.0 作为依赖项
将设计版本更新为 3.0.0.rc
添加 protected_attributes 以简化向 Rails 4 的过渡,而无需切换到 strong_parameters
更改环境配置以添加 config.eagerload 并删除 config.whiny_nils 以删除弃用警告。
更改 confirm() 的语法以删除弃用警告
将哈希语法从哈希火箭更改为 1.9.3 语法
删除自动解释配置以删除弃用警告
使用 rake rails:update:bin 添加 bin 目录
添加
rails_12factor
gem以便能够托管到heroku在 Gemfile 中为 heroku 添加 ruby 版本
编辑 2
我想还值得一提的是,在预编译期间 Heroku 中没有任何错误,它实际上说它在预编译资产方面是成功的,这就是为什么它不起作用很奇怪。