Execute um script rubi no Windows
Pergunta
Eu não tenho ideia de Ruby :)
O problema é que preciso de uma maneira de transformar todos os CSs em um e-mail HTML em estilos embutidos. E não há melhor maneira de fazer isso do que usar Premiler de Alex Dunae.
Mas eu quero executá -lo no Windows. Meu objetivo é poder executar o script de C# e buscar o arquivo criado pelo script Ruby em C# e usar o HTML para o e-mail.
De qualquer forma, executar o script Ruby é a parte difícil para mim. Eu baixei e instalei o Instalador Ruby, e eu também baixei o pacote Premiler 1.6.2.
Eu tento executá -lo fazendo isso:
C:\Ruby192\bin>ruby.exe C:\Workspace\Premailer\bin\premailer C:\Workspace\index.htm > C:\Workspace\index2.htm
E o que me diz é o seguinte:
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>'
Eu provavelmente preciso de algumas dependências ou o quê?
Solução
Você está perdendo a biblioteca HPRICOT, que é um analisador HTML.
No entanto, não tenho certeza Por quê está faltando. Ele está devidamente listado como uma dependência na especificação do pacote do PremAiler e deveria ter sido instalado automaticamente quando você instalou o PremAiler (a menos que você o desativasse explicitamente com o --ignore-dependencies
bandeira).
Além disso, o binário premAiler deveria ter sido instalado em C:\Ruby192\bin
, não C:\Workspace\Premailer\bin
.
Tente desinstalar o pré -corredor:
gem uninstall --force premailer
E então tente novamente instalá -lo:
gem install premailer
NOTA: O HPRICOT é realmente escrito em C, não em Ruby, por assimnte, para instalá -lo, você precisa instalar o RubyInstaller Devkit. (Isso pode ser uma explicação por que não foi instalada automaticamente.)
Uma dica geral: se você deseja interoperar entre a CLI e o rubi, é muito mais fácil usar a implementação do Ruby IronRuby em vez de Yarv, o que parece que você está usando, porque o IronRuby realmente corre na CLI (com mais precisão o DLR) e tem uma API padronizada para ligar para o código da CLI de Ruby e vice -versa (e que a API é totalmente compatível com C# 4's dynamic
). Exceto em isto Caso particular que não funciona porque, como mencionei, o HPRICOT está escrito em C, como uma extensão para Yarv, para que simplesmente não funcione com a IronRuby.
Outras dicas
Sim, "hpricot" está faltando. A maneira mais fácil de você provavelmente está usando Rubygems para instalar:
gem install -r hpricot