Автономный RedCloth на Windows - PullRequest
3 голосов
/ 19 января 2011

Context

Недавно я принимал участие в проекте по разработке программного обеспечения, для которого я хотел бы, чтобы технические документы были написаны с использованием текстовой разметки (подходит для отслеживания в хранилище кода вместе с кодом).,Поскольку в проекте уже используется Redmine , я бы хотел использовать Textile , что позволит другим разработчикам не изучать еще один язык разметки.Я знаю, что реализации несколько различаются, поэтому в духе POLS я бы хотел использовать RedCloth , который используется внутри Redmine.

Мы разрабатываем иразвертывание на нескольких ОС, включая Windows.Для большего удобства, а также нетехнических пользователей, не являющихся разработчиками, использующих только Windows , я хотел бы иметь возможность компилировать указанные технические документы с использованием отдельного инструмента, предпочтительно развернутого как singleУстановщик .

Я на 100% новичок в Ruby, поэтому наберитесь терпения.Я не планирую разработку на Ruby для этого проекта, я просто хочу рабочую установку на Windows, я позабочусь обо всем остальном.

Справка Требуется

Я не разрабатываю приложение на Rails, и оно предназначено для установки на рабочем столе, поэтому не говорите мне "просто использовать его в Linux".Я установил DevKit, который устанавливает make, g++ и т. Д. И воспринимается сценариями ./configure как "нормальная среда разработки".

У меня есть простая проблема, и я ищупростое решение.Поиск в этой проблеме показал, что эта проблема до была зарегистрирована раньше, чем , и я нашел только рекомендации по переходу на Linux, и люди, которые говорят мне, что это «просто работает как рекламируется».

IМне нужна некоторая реальная помощь, даже если это только в форме контрольного списка возможных точек сбоя, которые я могу проверить.

Среда

Эта проблема возникает в Windows 7, 64-битовые машины без предварительной истории установки Ruby.У меня нет доступа к 32-битной версии.

Установка Linux не является проблемой.

Проблема

Я только что скачал Ruby Installer для Windows Ruby 1.9.2-p136 и Ruby Development Kit DevKit-tdm-32-4.5.1-20101214-1400-sfx.exe, который необходим для компиляции RedCloth.Обе версии являются текущими рекомендуемыми версиями для развертывания Ruby в Windows на данный момент (или я так прочитал).

Я следую инструкциям, и пока все хорошо.Как Ruby, так и DevKit устанавливаются по умолчанию (без пробелов в именах папок).config.yml правильно указывает на новую установку и больше ничего.ruby dk.rb install работает нормально.Теперь я вижу в папке установки Ruby файл с именем lib/ruby/site_ruby/devkit.rb, то есть, я полагаю, предварительный хук компиляции, который устанавливает путь к DevKit при компиляции гемов Ruby.Код указывает на правильные папки, как и ожидалось.

Когда я тестирую установку с помощью рекомендованной команды gem install rdiscount --platform=ruby, я получаю следующее:

C:\DevKit>gem install rdiscount --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rdiscount:
        ERROR: Failed to build gem native extension.

"C:/Ruby192/bin/ruby.exe" extconf.rb

Это немного сбивает с толку, поэтомуЯ начал смотреть вокруг, и я могу найти файл lib/ruby/gems/1.9.1/gems/rdiscount-1.6.5/ext/extconf.rb file.Запуск через ruby extconf.rb в этой папке дает мне:

Could not create Makefile due to some reason, probably lack of necessary libraries
and/or headers.  Check the mkmf.log file for more details.  You may need
configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=c:/Ruby192/bin/ruby
    --with-rdiscount-dir
    --without-rdiscount-dir
    --with-rdiscount-include
    --without-rdiscount-include=${rdiscount-dir}/include
    --with-rdiscount-lib
    --without-rdiscount-lib=${rdiscount-dir}/lib
c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:678:in `flush': Broken pipe (Errno::EPIPE)
    from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:678:in `message'
    from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:690:in `checking_for'
    from c:/Ruby192/lib/ruby/1.9.1/mkmf.rb:796:in `have_func'
    from extconf.rb:5:in `<main>'

Я где-то прочитал (сейчас не могу найти ссылку на него), что rdiscount не компилируется в Windows, поэтому яприступил к извлечению исходного кода для RedCloth из исходного хранилища (git clone git://github.com/jgarber/redcloth.git) в соответствии с инструкциями.

Когда я пытаюсь rake install из указанного каталога, я получаю ошибки за отсутствующие драгоценные камни (diff-lcsи другие), поэтому я устанавливаю их с помощью gem install diff-lcs --version '=...', а затем могу начать реальную установку.

Когда я туда попадаю, rake выдает следующее сообщение:

(in c:/Users/carona/Desktop/redcloth)
rake aborted!
No such file or directory - gem build c:/Users/carona/Desktop/redcloth/redcloth.gemspec 2>&1
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:138:in ``'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:138:in `block in sh_with_code'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:137:in `chdir'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:137:in `sh_with_code'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:129:in `sh'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:42:in `build_gem'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:53:in `install_gem'
c:/Ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.8/lib/bundler/gem_helper.rb:31:in `block in install'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:634:in `call'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:634:in `block in execute'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:629:in `each'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:629:in `execute'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:595:in `block in invoke_with_call_chain'
c:/Ruby192/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:588:in `invoke_with_call_chain'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:581:in `invoke'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2041:in `invoke_task'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `block (2 levels) in top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `each'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2019:in `block in top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:2013:in `top_level'
c:/Ruby192/lib/ruby/1.9.1/rake.rb:1992:in `run'
c:/Ruby192/bin/rake:31:in `<main>'

Однакофайл c:/Users/carona/Desktop/redcloth/redcloth.gemspec на самом деле существует, поэтому я понятия не имею, как это сделать.

1 Ответ

1 голос
/ 20 января 2011

Я отследил проблему до двух вещей, вторая из которых - моя "ошибка".

  1. Инструменты MinGW, распространяемые с DevKit 4.5.1, не работают в Windows 764-битный.Кажется, у них есть старая версия MinGW, в которой была эта проблема.Установка современных инструментов MinGW и использование тех, которые позволяли компилировать.
  2. Сначала я использовал Git Bash для запуска gem install RedCloth, и это привело к тому, что некоторые пути были переведены в /C/... вместо C:/ внутриMakefile.Очевидно, g++ и друзья не смогли открыть ни один из указанных файлов.Переустановка с помощью ruby и gem из cmd.exe устранила все проблемы.

Теперь у меня счастливая установка.Я также сообщил о первой проблеме команде RubyInstaller.

...