3

我应该在 Windows 环境中使用哪个版本的 Ruby?

我正在尝试在 1.9 上使用 Watir,但它不起作用。将在 1.8.6 上工作。

关于使用哪个版本的任何建议以及 Watir 无法在 1.9 上运行的原因

4

5 回答 5

5

Watir.com 建议使用 Ruby 1.8.6-26。我没有尝试过,但是有一个声称与 Ruby 1.9 兼容的 Watir 的分支:

http://github.com/vapir/vapir

于 2010-07-13T12:32:30.110 回答
3

我使用这个并且它有效:

>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
于 2010-07-13T14:19:21.027 回答
2

没有“正确”的版本。1.8.6、1.8.7 和 1.9.1 都是官方“推荐”的,帮助不大!

当 1.8.x gem 不能在 Windows 下与 1.9.x 一起工作时,通常情况下 gem - 或其依赖项之一 - 包含已编译的元素(DLL,通常以.so扩展名命名)并且该组件没有' t 尚未针对 mingw32 编译,这是 Ruby 1.9 的标准,而 1.8.6 和以前的版本是使用(旧)MS Visual C 编译的。

查看 watir gem,我发现它包含 win32ole.so,这可能是问题所在。我不知道为什么这应该是必要的——它是 Windows 安装集的一部分。也许开发人员需要确保一个固定的稳定版本,因此他们强制使用特定版本而不是使用库中的版本。或者他们修复了什么?不知道。

除此之外,watir 还依赖于 win32-api 和 nokogiri,它们都在我的机器上安装了 mswin32 版本,并且需要有 mingw32 版本才能与 1.9 一起使用。

手头没有 1.9 实例,我无法快速判断这些版本是否存在。

尝试寻找 win32ole.so 的 mingw32 版本(可能在 [ruby-dir]/lib/ruby/1.9/i386-mingw32 之类的某个地方),然后将其替换 watir 使用的那个。

于 2010-07-13T09:17:35.900 回答
2

最好使用RubyInstaller提供的 Ruby 的 mingw 版本。旧的 mswin32 版本的 Ruby 被认为是旧版本。有些 gem 需要从源代码编译(RedCloth 就是一个很好的例子),为此您需要安装DevKit;然而,watir 不需要编译任何东西——它的所有 gem 依赖项都预编译了 mingw32 扩展(nokogiri 和 win32-api)。

您可以使用Pik在 Windows 上安装多个版本的 Ruby(包括 JRuby 和 IronRuby)。安装 Pik gem 后,您可以通过发出诸如pik install ruby 1.9.1或之类的命令轻松安装新版本的 ruby pik install jruby​​。您甚至可以pik install devkit为所有已安装的 Ruby 副本安装 DevKit。可以在此处找到文档和大量使用示例。

于 2010-07-13T11:08:20.127 回答
2

要允许 Watir(和 FireWatir)在 ruby​​ 1.9.2 上运行,请安装 devkit 并遵循此处列出的程序:http ://rubyinstaller.org/downloads/ GitHub 上的 Ruby Installer

gem 卸载 win32-api gem install win32-api --platform=ruby

于 2010-09-02T20:00:21.430 回答