我有一个Rails 3.2项目部署到Heroku并使用资产同步已经发展到这样一个地步,即有很多资产在Heroku上预编译它们太慢了。所以我正在使用:
$ rake assets:precompile
...在本地编译资产(使用Asset Sync将它们推送到S3存储桶)。显然,这会在我的公共文件夹中创建一个包含所有预编译资产的assets
文件夹。
现在,当我推送到Heroku时,它看到我已经预编译了我的资产并跳过了预编译,使我的部署速度更快。
当我回到本地开发时,问题出现了。既然资产是预编译的,Rails就会使用这些资产而不会获取我对本地文件所做的更改。显而易见的事情是删除资产,但这意味着每次推送时我都需要首先重新预编译资产,这非常耗时。
那么我如何告诉Rails忽略公共目录中的任何资产,并在开发环境中使用我未编译的本地文件。
答案 0 :(得分:1)
更改/设置assets_prefix
中的config/environments/development.rb
,与RailsGuides中建议的一样:
config.assets.prefix = "/dev-assets"
从现在开始,Rails会以dev模式检查此文件夹(public/dev-assets
)是否存在任何预编译资产而不是默认位置(public/assets
) - 如果dev-assets为dev-assets,则使用未编译的本地文件空:
由于默认情况下rake assets:precompile
在生产模式下运行(与RAILS_ENV=production rake assets:precompile
相同),编译后的资产仍会写入默认位置public/assets
,但永远不会写入public/dev-assets
- 这样你的dev-env就不会受到影响......