在Windows上运行ruby脚本

时间:2010-11-23 19:50:41

标签: ruby windows premailer

我不知道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>'

我可能需要一些依赖,或者什么?

2 个答案:

答案 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