Запустите ruby-скрипт в Windows
Вопрос
Я понятия не имею о Ruby :)
Дело в том, что мне нужен способ превратить весь CSS в электронном письме HTML во встроенные стили.И нет лучшего способа сделать это, чем использовать Предварительная рассылка от Алекса Дунае.
Но я хочу запустить его в Windows.Моя цель - иметь возможность запускать скрипт с C # и извлекать файл, созданный ruby-скриптом на C #, и использовать HTML для электронного письма.
В любом случае, запуск ruby-скрипта - это самая сложная часть для меня.Я скачал и установил Установщик Ruby, и я также скачал пакет 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>'
Мне, наверное, нужны какие-то зависимости, или что?
Решение
Вам не хватает библиотеки Hpricot, которая является анализатором HTML.
Однако я не уверен почему этого не хватает.Он правильно указан как зависимость в спецификации пакета Premailer и должен был быть автоматически установлен при установке Premailer (если вы явно не отключили его с помощью --ignore-dependencies
флаг).
Кроме того, двоичный файл Premailer должен был быть установлен в C:\Ruby192\bin
, не C:\Workspace\Premailer\bin
.
Попробуйте удалить Программу предварительной рассылки:
gem uninstall --force premailer
А затем попробуйте еще раз установить его:
gem install premailer
Примечание:Hpricot на самом деле написан на C, а не на Ruby, поэтому для его установки вам необходимо установить RubyInstaller DevKit.(Это может быть объяснением того, почему он не был установлен автоматически.)
Общий совет:если вы хотите взаимодействовать между CLI и Ruby, гораздо проще использовать реализацию IronRuby Ruby вместо YARV, которую, похоже, вы используете, потому что IronRuby фактически работает на CLI (точнее, DLR) и имеет стандартизированный API для вызова CLI-кода из Ruby и наоборот (и этот API полностью совместим с C # 4 dynamic
).За исключением это частный случай, который не сработает, потому что, как я уже упоминал, Hpricot написан на C как расширение к YARV, поэтому он просто не будет работать с IronRuby.
Другие советы
Да, «Hpricot» отсутствует. Самый простой способ к вам, вероятно, использует RubyGems для установки:
gem install -r hpricot