Windows上的独立RedCloth

时间:2011-01-19 20:35:09

标签: ruby windows redcloth

上下文

我最近参与了一个软件开发项目的一部分,我希望使用文本标记来编写技术文档(适合在代码库中跟踪代码)。因为项目已经在使用Redmine,所以我想使用Textile,从而避免其他开发人员学习另一种标记语言。我知道实现方式有所不同,所以本着POLS的精神,我想使用Redmine内部使用的RedCloth

我们正在开发和部署到多个操作系统,包括Windows。为方便起见,以及使用Windows 的非技术性,非开发人员用户,我希望能够使用独立工具编译所述技术文档,最好部署为单个安装程序

我是Ruby的新手,所以请耐心等待。我不打算在这个项目中使用Ruby进行开发,我只想在Windows上进行有效的安装,我会从那里开始处理其余的工作。

帮助想要

我没有开发Rails应用程序,这是用于桌面安装,所以不要告诉我“只在Linux上使用它”。我安装了安装makeg++等的DevKit,并被./configure脚本接受为“理智的开发环境”。

我有一个简单的问题,我正在寻找一个简单的解决方案。谷歌搜索这个问题已经向has been reported before显示了这个问题,而且我只找到了切换到Linux的建议,并且那些告诉我“只是按宣传方式工作”的人。

我想要一些实际的帮助,即使它只是以我可以检查的可能失败点的清单的形式。

环境

在没有Ruby安装历史的Windows 7,64位计算机上会出现此问题。我目前无法访问32位。

Linux安装不是问题。

问题

我刚刚下载了Ruby Installer for Windows Ruby 1.9.2-p136Ruby Development Kit DevKit-tdm-32-4.5.1-20101214-1400-sfx.exe,这是编译RedCloth所必需的。两者都是目前推荐的用于在Windows上部署Ruby的版本(或者我已经阅读过)。

我正在遵循指示,到目前为止一切顺利。 Ruby和DevKit都安装在默认路径中(文件夹名称中没有空格)。 config.yml正确指向新安装,没有其他内容。 ruby dk.rb install运行正常。我现在可以在Ruby安装文件夹中看到一个名为lib/ruby/site_ruby/devkit.rb的文件,我认为这是一个编译预挂钩,用于在编译Ruby gem时设置DevKit的路径。代码指向正确的文件夹,如预期的那样。

当我使用推荐的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文件。通过该文件夹中的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的源代码({ {1}}),按照指示。

当我从给定目录中尝试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>' 确实存在,所以我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

我已将问题追溯到两件事,第二件事是我的“错误”。

  1. 随DevKit 4.5.1一起发布的MinGW工具在Windows 7 64位上不起作用。他们似乎有一个旧版本的MinGW,它表现出这个问题。安装最新的MinGW工具并使用允许编译的工具。
  2. 我最初使用Git Bash来运行gem install RedCloth,这导致一些路径在Makefile中被转换为/C/...而不是C:/。显然,g++和朋友无法打开任何给定的文件。从ruby运行gemcmd.exe重新安装已解决所有问题。
  3. 我现在安装得很开心。我还向RubyInstaller团队报告了第一期。