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 …