我遇到了Rails 3.1资产管道的问题。 资产包括两次开发:
<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
答案 0 :(得分:39)
尝试将以下内容添加到development.rb:
config.serve_static_assets = false
...然后清除浏览器缓存(基于评论进行更新)
静态资产是指公共/资产中的预编译资产,rake assets:precompile
放置它们。
正在发生的事情是,公共/资产中存在的任何内容都会覆盖app / assets中的任何内容。因此,当js标记打算识别app / assets / application.js时,正在加载public / assets / application.js.
答案 1 :(得分:12)
一旦摆脱/ public / assets,您还必须清除浏览器缓存。
答案 2 :(得分:8)
这只是给我带来了一个问题。设置以下内容使应用程序工作,但包含单个application.js文件 - 我不想在开发中使用它:
config.serve_static_assets = false
我之前预先编译了我的资产(似乎是原因)。
为了解决这个问题,我做了以下几点:
RAILS_ENV=development rake assets:clean
以清除tmp / assets 只有在我编辑了application.js之后才会出错,然后纠正它,页面中包含的applciation.js不是完整的,预编译的application.js。
我不确定是否所有这些都需要完成。我也在沿途重新启动我的服务器。
答案 3 :(得分:4)
被这个(又一次)绊倒了, - 不要忘记在//= require
结尾处的所有application.js
指令后添加一个BLANK LINE!
答案 4 :(得分:0)
我用较少的文件添加相同的问题。
此处来自documentation:
在开发模式中,资产在订单中作为单独的文件提供 它们在清单文件中指定。
我的解决方案是从*= require_tree .
删除行application.css.less
,并仅使用较少的@import "my-styles";
。
也许你可以用javascript找到类似的解决方案......