我不知道Ruby:)
问题是,我需要一种方法将HTML电子邮件中的所有CSS转换为内联样式。除了使用Alex Dunae's Premailer之外,没有更好的方法可以做到这一点。
但我想在Windows上运行它。我的目标是能够从C#运行脚本,并获取由C#中的ruby脚本创建的文件,并使用HTML作为电子邮件。
无论如何,运行ruby脚本对我来说很难。我已经下载并安装了Ruby Installer,我还下载了Premailer 1.6.2软件包。
我试着这样做:
C:\Ruby192\bin>ruby.exe C:\Workspace\Premailer\bin\premailer C:\Workspace\index.htm > C:\Workspace\index2.htm
它告诉我的是:
C:\Ruby192\bin>ruby.exe C:\Workspace\Premailer\bin\premailer C:\Workspace\index.htm > C:\Workspace\index2.htm
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- hpricot (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from C:/Workspace/Premailer/lib/premailer.rb:4:in `<top (required)>'
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from C:/Workspace/Premailer/bin/premailer:5:in `<main>'
我可能需要一些依赖,或者什么?
答案 0 :(得分:3)
您缺少Hpricot库,它是一个HTML解析器。
但是,我不确定为什么缺少。它在Premailer的软件包规范中被正确列为依赖项,它应该在您安装Premailer时自动安装(除非您使用--ignore-dependencies
标志明确禁用它)。
此外,Premailer二进制文件应该安装在C:\Ruby192\bin
中,而不是C:\Workspace\Premailer\bin
。
尝试卸载Premailer:
gem uninstall --force premailer
然后再次尝试安装它:
gem install premailer
注意:Hpricot实际上是用C语言编写的,而不是用Ruby编写的,所以要安装它,你需要安装RubyInstaller DevKit。 (这可能是为什么它没有自动安装的原因。)
一般提示:如果要在CLI和Ruby之间进行互操作,使用IronRuby Ruby实现而不是YARV会更容易,因为IronRuby实际上是在CLI上运行的(更准确地说是DLR)并且具有用于从Ruby调用CLI代码的标准化API,反之亦然(并且该API与C#4的dynamic
完全兼容)。除了这个特殊情况之外不会起作用,因为正如我所提到的,Hpricot是用C语言编写的,作为YARV的扩展,所以它根本不适用于IronRuby。
答案 1 :(得分:1)
是的,“hpricot”不见了。最简单的方法是使用rubygems进行安装:
gem install -r hpricot