8

我最近尝试将我的 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.134.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_12factorgem以便能够托管到heroku

  • 在 Gemfile 中为 heroku 添加 ruby​​ 版本

编辑 2

我想还值得一提的是,在预编译期间 Heroku 中没有任何错误,它实际上说它在预编译资产方面是成功的,这就是为什么它不起作用很奇怪。

4

4 回答 4

1

尝试将所有 gem 从assetsGemfile 中的组移动到主范围。在 Rails 4 中不再使用 Assets 组,这可能是导致问题的原因。

于 2013-07-05T00:11:17.463 回答
0

使用对我来说工作较少的版本

gem 'twitter-bootstrap-rails', '= 2.2.6'
gem 'less-rails', '2.3.3'
于 2013-09-11T09:36:44.310 回答
0

我遇到了同样的问题。我现在在本地预编译它们

bundle exec rake assets:precompile RAILS_ENV=production

并将它们添加到存储库并将它们推送到heroku。

于 2014-03-29T00:27:12.630 回答
-3

在您的 production.rb 文件中,确保您有config.assets.compile = true. 这为我解决了这个问题。

于 2013-08-18T20:47:09.947 回答