我遇到了 Rails 3.1 Assets 管道问题。 Assets 在开发过程中包含两次:
<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
生产中的预编译资源一切正常。
开发.rb
config.assets.compress = false
config.assets.debug = true
生产.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
...然后清除浏览器缓存(根据评论更新)
静态资源是指 public/assets 中的预编译资源,这是 rake assets:precompile
放置它们的地方。
发生的情况是,如果您为应用/ Assets 提供服务,则公共(public)/ Assets 中存在的任何内容都将覆盖应用/ Assets 中的任何内容。因此,当 js 标签打算识别 app/assets/application.js 时,就会加载 public/assets/application.js。
关于ruby-on-rails - Rails 3.1 Assets - 开发中的奇怪服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356251/