【问题标题】:Make Asset Pipeline work with Chrome DevTools Autosave使资产管道与 Chrome DevTools 自动保存一起工作
【发布时间】:2012-04-01 16:18:54
【问题描述】:
Chrome DevTools Autosave 不适用于Rails Asset Pipeline。问题的罪魁祸首在于资产 URL——我无法通过 URL 破译实际的文件路径。例如,/assets/application.css 可以引用 app/assets/stylesheets/application.css、lib/assets/stylesheets/application.css、
或供应商/资产/样式表/application.css。
我想知道,如何将资产 URL 更改为以下之一:
- /app/assets/stylesheets/application.css(完全匹配实际文件路径,完美解决)
- /assets/application.css?source_url=app/assets/stylesheets/application.css(引入source_url查询参数)
如果为此编写 Rails 插件,我将不胜感激。
更新:我填写了an issue to sprockets。
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-plugins
asset-pipeline
google-chrome-devtools
【解决方案1】:
我会努力让事情顺利进行,但我必须做更多的工作来验证或提供更好的答案,所以我会标记这个答案社区维基。这样其他人可以在下面回答或编辑此帖子。
我必须为 Sinatra 设置资产管道,一般来说,在最新版本的 Sprockets(用于在 Rails 中提供资产管道)中,Sprockets::Asset 类具有获取 path and logical path 的方法.
我相信 Rails 使用 asset_path 助手从 Sprockets 类生成面向公众的 url。这又似乎使用了AssetPaths#compute_public_path 实例方法。一个好的第一步是根据您对source.pathname 的解析来修改代码的这些部分以添加source_url 参数。 这是假设源是某种形式的Sprockets::Asset 的实例。
【解决方案2】:
我不太确定你期望的来源,但它已经由ActionView::Helpers::AssetTagHelper提供
http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html
image_tag("rails.png")
# => <img alt="Rails" src="http://assets.example.com/images/rails.png?1230601161" />
stylesheet_link_tag("application")
# => <link href="http://assets.example.com/stylesheets/application.css?1232285206" media="screen" rel="stylesheet" type="text/css" />