在开发中绕过公共目录中的资产

时间:2013-08-17 12:43:05

标签: ruby-on-rails-3 heroku asset-pipeline asset-sync

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

$ rake assets:precompile

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

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

当我回到本地开发时,问题出现了。既然资产是预编译的,Rails就会使用这些资产而不会获取我对本地文件所做的更改。显而易见的事情是删除资产,但这意味着每次推送时我都需要首先重新预编译资产,这非常耗时。

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

1 个答案:

答案 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就不会受到影响......