Запустить скрипт ruby ​​в Windows - PullRequest
1 голос
/ 23 ноября 2010

Понятия не имею о Ruby:)

Дело в том, что мне нужен способ превратить весь CSS в электронной почте HTML во встроенные стили.И нет лучшего способа сделать это, чем использовать Premailer Алекса Дунае .

Но я хочу запустить его на Windows.Моя цель - иметь возможность запустить скрипт из C #, извлечь файл, созданный сценарием ruby ​​в C #, и использовать 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 ]

3 голосов
/ 23 ноября 2010

Вам не хватает библиотеки 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, поэтому для его установки вам нужно установить Devyit RubyInstaller. (Это может быть объяснением того, почему он не был установлен автоматически.)

Общий совет: если вы хотите взаимодействовать между CLI и Ruby, гораздо проще использовать реализацию IronRuby Ruby вместо YARV, которую, как вам кажется, вы используете, потому что IronRuby фактически работает на CLI (точнее, DLR) и имеет стандартизированный API для вызова кода CLI из Ruby и наоборот (и этот API полностью совместим с C # 4 dynamic). За исключением этого особого случая, который не будет работать, потому что, как я уже говорил, Hpricot написан на C, как расширение YARV, поэтому он просто не будет работать с IronRuby.

1 голос
/ 23 ноября 2010

Да, "hpricot" отсутствует. Самый простой способ для вас - установить Rubygems:

gem install -r hpricot
...