0

我有一个 Rails 3.2 项目部署到 Heroku 并使用 Asset Sync,它已经发展到有这么多资产的地步,在 Heroku 上预编译它们太慢了。所以我正在使用:

$ rake assets:precompile

…在本地编译资产(使用 Asset Sync 将它们推送到 S3 存储桶)。显然,这会assets在我的公共文件夹中创建一个包含所有预编译资产的文件夹。

现在,当我推送到 Heroku 时,它会看到我已经预编译了我的资产并跳过了预编译,从而使我的部署速度更快。

当我回到本地开发时,问题就来了。现在资产已经预编译,Rails 使用这些资产并且不会接收我对本地文件所做的更改。显而易见的事情是删除资产,但这意味着每次推送时我都需要先重新预编译资产,这很耗时。

那么如何告诉 Rails 在开发环境中忽略公共目录中的任何资产并使用我未预编译的本地文件。

4

1 回答 1

1

更改/设置assets_prefixin config/environments/development.rb,如 RailsGuides中建议的那样:

config.assets.prefix = "/dev-assets"

从现在开始,Railspublic/dev-assets在 dev-mode 中检查此文件夹 () 中是否有任何预编译的资产,而不是默认位置 ( public/assets) - 如果 dev-assets 为空,则使用未预编译的本地文件:

由于rake assets:precompile默认情况下在生产模式下运行(与 相同RAILS_ENV=production rake assets:precompile),编译后的资产仍会写入 default-location public/assets,但永远不会public/dev-assets- 这样您的 dev-env 根本不会受到影响......

于 2013-11-11T19:11:47.457 回答