Rails不会加载资产管道
我运行了rake assets:precompile
在开发时错误地rake assets:precompile
,并且Rails在开发时停止加载资产。 我只加载了application.js
和application.css
。
application.js中:
//= require jquery //= require jquery_ujs //= require_tree .
application.css:
*= require_self *= require_tree .
使用Rails 3.2.2
尝试从本地开发环境中删除已编译的资产:
rm -rf public/assets
编辑:
此外,请确保在development.rb
设置config.assets.compress = false
和config.assets.debug = true
。
TL;博士
-
$ rake assets:clean
- 重启rails服务器
$ rails server -e development
- 清除浏览器缓存,或在应用页面上执行
ctrl+shift+r
现在一切都应该像你运行rake assets:precompile
之前一样rake assets:precompile
– 结束tl;博士 –
如果上述方法无效,则详细步骤列表如下:
- 执行
$ rake assets:clean
或$ rm -rf public/assets
以删除生成的资产。 - 在application.rb中,确保:
-
config.assets.enabled = true
(启用rails的资产pipleline)
-
- 在development.rb中,确保:
-
config.assets.compress = false
(以免gzip资产) -
config.assets.debug = true
(以便不将所有css和js文件合并到应用程序中。[cs | js]) -
config.assets.compile = true
(或未设置 – 启用资产的运行时编译) -
config.serve_static_assets = false
(或未设置)
-
- 最后,重启rails服务器
$ rails server -e development
这应该解决它。
运行rake assets:precompile
在public/assets
下生成静态资产,这会导致Rails直接为这些public/assets
提供服务。 为防止这种情况,您可以:
- 手动删除这些文件或
- 运行
rake assets:clean
打开config/application.rb
并设置以下内容:
config.assets.enabled = true
如果清理资产目录并确保配置正确(如前面的答案所示)不起作用 – 您是否有可能使用页面缓存?
如果页面是使用指向已编译文件的src
标记生成的,则需要立即重新生成它们。
如果它对任何人都有帮助 – 我遇到了一个问题,即开发中没有application.js / .css加载(在查看源代码时我仍然可以看到清单行)。
我运行了一个旧的rails 3.2.2应用程序由于某种原因我必须进入并为清单文件(application.js和application.css)添加空行并保存它们 – 然后资产开始正常工作。
我删除了空行,它仍然有效,所以我假设它可能只是需要在文件上更新的修改日期戳。