我应该在 Windows 环境中使用哪个版本的 Ruby?
我正在尝试在 1.9 上使用 Watir,但它不起作用。将在 1.8.6 上工作。
关于使用哪个版本的任何建议以及 Watir 无法在 1.9 上运行的原因
Watir.com 建议使用 Ruby 1.8.6-26。我没有尝试过,但是有一个声称与 Ruby 1.9 兼容的 Watir 的分支:
我使用这个并且它有效:
>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
没有“正确”的版本。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 使用的那个。
最好使用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。可以在此处找到文档和大量使用示例。
要允许 Watir(和 FireWatir)在 ruby 1.9.2 上运行,请安装 devkit 并遵循此处列出的程序:http ://rubyinstaller.org/downloads/ GitHub 上的 Ruby Installer
gem 卸载 win32-api gem install win32-api --platform=ruby