Rails 3.1资产 – 奇怪的服务在发展
我有一个Rails 3.1资产pipe道的问题。 开发中包含两次资产:
<script src="/assets/main_new.js?body=1" type="text/javascript"></script> <script src="/assets/pagenav.js?body=1" type="text/javascript"></script> <script src="/assets/tours.controller.js?body=1" type="text/javascript"></script> <script src="/assets/tours.js?body=1" type="text/javascript"></script> <script src="/assets/application.js?body=1" type="text/javascript"></script>
Rails以某种方式编译和包含application.js,所以所有的脚本都包含两次 – 作为单独的文件和application.js
生产中的预编译资产一切都很好。
development.rb
config.assets.compress = false config.assets.debug = true
production.rb
# Disable Rails's static asset server (Apache or nginx will already do this) config.serve_static_assets = false # Compress both stylesheets and JavaScripts config.assets.compress = true config.assets.js_compressor = :uglifier config.assets.css_compressor = :scss config.assets.compile = false config.assets.digest = true
application.rb中
config.assets.enabled = true
尝试添加以下内容到development.rb:
config.serve_static_assets = false
…然后清除浏览器caching( 根据评论更新 )
静态资产是指在公共/资产中预先编译的资产,这是rake assets:precompile
放置它们的地方。
发生什么事情是,公共/资产中存在的任何东西都将覆盖应用程序/资产中的任何东西,如果你正在服务它们。 所以当js标签打算识别app / assets / application.js时,public / assets / application.js被加载。
一旦你摆脱/公共/资产,你还必须清除浏览器caching。
这只是给我一个问题。 设置以下内容可以使应用程序正常工作,但包含单个application.js文件 – 我不想在开发中使用它:
config.serve_static_assets = false
以前我曾经预先编译过我的资产(似乎是原因)。
要解决它,我做了以下几点:
- 删除先前预编译添加的公共/资产目录。
- 运行
RAILS_ENV=development rake assets:clean
清除tmp /资产 - 编辑的应用程序/资产/ application.js
只有在我编辑了application.js之后,它才发生错误,然后纠正了包含在页面中的applciation.js不是完整的,预编译的application.js。
我不确定是否所有这些都需要完成。 我也在重新启动我的服务器。
被这个(又一次)绊倒了, – 不要忘记在你的application.js
的最后你的//= require
指令之后添加一个BLANK LINE!
我用较less的文件添加相同的问题。
这里从文档 :
在开发模式下,资产按照它们在清单文件中指定的顺序作为单独的文件提供。
我的解决scheme是删除行*= require_tree .
从application.css.less
并仅使用@import "my-styles";
从less。
也许你可以find一个类似的解决scheme与JavaScript …