如何避免在开发模式下提供预编译资源?
我不想在开发模式下连接JavaScript文件,而是将它们作为单独的文件提供。 所以我configuration了:
development.rb:
config.assets.compress = false config.assets.debug = true config.assets.compile = true 在我的/ app / assets / javascript目录中有:
- reviews.js
-  评论/
- foo.js
- bar.js
 
reviews.js:
 //= require jquery //= require jquery_ujs //= require_tree ./reviews 
 我在我的布局中使用<%= javascript_include_tag "reviews" %>包含JavaScript。 生成的页面正确地引用这三个脚本, reviews.js基本上是空的。 到现在为止还挺好。 
 现在,当我使用rake assets:precompile预编译我的资产进行生产时rake assets:precompile三个JavaScript文件被连接到reviews.js 。 这对于生产来说都是很好的,但是现在, 在开发模式下 , 除了两个单独的文件之外还提供了concatenated reviews.js 。 
 当然,这会导致各种讨厌的bug在开发,因为现在, foo.js和bar.js的内容被提供两次,其中一个在bar.js中的潜在旧版本。 
我如何确保Rails在开发模式下不使用预编译资源?
这听起来像是在本地进行预编译。 由于文件存在于预期的位置,所以它们由开发服务器提供服务,并且请求不会转到链轮。
停止这个唯一的方法是删除编译的文件。
通常你不需要在本地编译。 预计在几乎所有情况下,预编译任务将在部署应用程序期间运行。 资产pipe道指南页面上有一个Capistrano配方。
如果您确实需要将这些文件本地提交到您的存储库,则可以使用分支来避免该问题。 保留生产代码的主分支,并为dev创build第二个分支。 只在主人上编译和提交资产。 当你切换到开发,他们将会消失。 根据需要将开发人员合并到主人。
编辑:确保您强制您的浏览器更新(控制+ F5),或者您可能会发现从浏览器caching中使用的旧资产!
 在config/environments/development.rb设置: 
 config.assets.prefix = "/assets_dev" 
所以在开发模式下,Rails将会在那里看到(但是它不会find任何东西,因为你不会在开发中编译资产(这实际上是你正在做的 – 不是编译资产)。
预编译生产时 ,使用
 RAILS_ENV=production rake assets:precompile 
 所以它编译成默认资产文件夹public/assets 。 
 在config/environments/development.rb设置: 
 config.serve_static_assets = false 
 没有来自/public文件将被提供 
 我试过这个,它的工作。 rake assets:precompile RAILS_ENV=production 
 我发现当您运行rake assets:precompile时,新版本的资产pipe道会执行此操作rake assets:precompile执行rake assets:precompile:all