Ort*_*ntz 54 ruby-on-rails ruby-on-rails-3.1 asset-pipeline
我不想在开发模式下连接JavaScript文件,而是将它们作为单独的文件提供.所以我配置了:
development.rb:
config.assets.compress = false
config.assets.debug = true
config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)
在我的/ app/assets/javascript目录中,我有:
reviews.js:
//= require jquery
//= require jquery_ujs
//= require_tree ./reviews
Run Code Online (Sandbox Code Playgroud)
我<%= javascript_include_tag "reviews" %>在我的布局中包含了JavaScript .生成的页面正确地单独引用三个脚本,reviews.js并且基本上是空的.到现在为止还挺好.
现在,当我使用rake assets:precompile三个JavaScript文件连接到预生成我的资产进行生产时reviews.js.这是一切优秀的生产,但现在,在开发模式,级联reviews.js供应除了两个单独的文件.
当然,这会在开发时导致各种令人讨厌的错误,因为现在,内容foo.js和bar.js服务两次,其中一个可能是旧的版本reviews.js.
如何确保Rails在开发模式下不使用预编译资产?
小智 80
在config/environments/development.rb集合中:
config.assets.prefix = "/assets_dev"
Run Code Online (Sandbox Code Playgroud)
所以在开发模式下Rails会看到那里(但是它不会找到任何东西,因为你不会在开发中编译资产(这确实是你想要做的 - 不编译资产)).
在预编译生产时,请使用
RAILS_ENV=production rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
所以它编译成默认资产文件夹,public/assets.
Ric*_*lse 53
听起来你在本地进行预编译.由于文件存在于预期的位置,因此它们由开发服务器提供服务,并且请求不会转到Sprockets.
停止此操作的唯一方法是删除已编译的文件.
通常,您不需要在本地编译.预计在几乎所有情况下,预编译任务都将在部署应用程序期间运行.资产管道指南页面上有一个Capistrano配方.
如果您确实需要将这些文件本地提交到您的仓库,则可以使用分支来避免此问题.保留主分支以获取生产代码,并为dev创建第二个分支.仅在master上编译和提交资产.当你切换到dev时,它们就会消失.根据需要将dev合并为master.
编辑:确保强制浏览器更新(控制+ F5),或者您可能会发现浏览器缓存中使用的旧资产!
Pet*_*sen 17
在config/environments/development.rb集合中:
config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud)
并没有从文件/public将送达
| 归档时间: |
|
| 查看次数: |
28659 次 |
| 最近记录: |