【问题标题】:Fast Conversion HTML template to Rails Asset ERB/Sass layout快速将 HTML 模板转换为 Rails 资产 ERB/Sass 布局
【发布时间】:2012-11-29 16:54:17
【问题描述】:

我发现自己经常做同样的事情,使用设计师创建漂亮的用户界面,然后将 HTML/CSS 转换为跨资产管道拆分并查找和替换路径和 css+js 标签;更新所有内容以使用资产路径。有什么东西可以自动做到这一点吗?

【问题讨论】:

  • 您能详细说明一下吗?为什么是新的资产路径?打破缓存?

标签: html ruby-on-rails automation asset-pipeline converter


【解决方案1】:

对我来说,这种情况只是大声呼唤sed。如果您正在运行 Linux、Mac OS X 或其他 *nix,请继续阅读。 (如果您的开发环境是 Windows,但您正在部署到 *nix 服务器,您可以在其中设置部署后脚本,那么这种方法仍然适用。)

因此,您的设计人员可以访问本地目录中的资源,并且会生成像 <img src="images/logo.png"> 这样的标签。但是,在部署中,您希望将这些路径替换为像 <img src="<%= asset_path 'logo.png' %>"> 这样的 ERB 调用,或者将它们更改为指向带有像 <img src="http://assets.mysite.com/logo.png"> 这样的标签的某个外部 CDN,对吧?

好吧,无论哪种情况,sed 都是您的朋友! Sed 可以(除其他外)遍历文件并就地对其应用正则表达式替换。在 ERB 调用情况下(假设您已经将文件重命名为具有 erb 扩展名),您将运行以下命令:

$ sed -i 's/\(<img[^>]*src="\)images/\([^"]+\)\("[^>*]>\)/\1<%= asset_path \'\2\' %>\3/g' somefile.html.erb

运行此命令后,somefile.html.erb 将使用asset_path 而不是手动指定的图像路径。

第二种情况,您在另一台服务器上或可能只是从另一条路径提供图像,类似:

$ sed -i 's/\(<img[^>]*src="\)images/\([^"]+\)\("[^>*]>\)/\1http:\/\/assets.mysite.com\/\2\3/g' somefile.html

鲍勃是你的叔叔!

这些命令令人讨厌的一点是,您必须在每个文件上运行它们。好吧,是时候让另一个 UNIX 实用程序来救援了:find。此实用程序可以在目录树中的一堆文件上运行脚本:

$ find dir/with/html -type f -name '*.html.erb' -exec sed 's/foo/bar/g' {} \;

现在,如果上面的大部分内容对您来说看起来像是古拉丁语(并且您不流利地使用古拉丁语),那么您将想要了解更多关于正则表达式的知识,以便您可以调整上述命令来完成您想要的各种不同类型的转换。 This 是一个很好的使用 sed 和正则表达式的指南,不需要太多的先验知识。

一旦您有一组执行正确操作的命令,请将它们保存到 shell 脚本文件中。然后,只需在需要时运行该文件,它就会为您完成所有烦人的工作!这就是让学习所有这些钝命令值得的原因。它们比漂亮的 GUI 查找和替换对话框更多的是前期工作,但是它们的灵活性以及将它们捆绑到脚本中的能力从长远来看可以节省您的时间和烦恼。

【讨论】:

    【解决方案2】:

    您是否尝试过使用asset pipeline outside rails

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多