Ruby mysql2 gem,无法在Windows 7上构建

时间:2011-06-16 04:53:23

标签: mysql ruby windows-7 gem

我来自OSX,其中Ruby在90%的时间内完美无瑕地运行。我有一段时间没碰过它,碰巧正好在Windows 7机器上工作。我正在尝试运行一个简单的Ruby on Rails项目,但我似乎无法通过任何数据库设置 我想在mysql上运行,但是当我尝试安装mysql2 gem(通过bundle installgem install mysql2)时,我收到了以下错误:

  

使用native来安装mysql2(0.2.9)   扩展   C:/ Ruby192 / LIB /红宝石/ site_ruby / 1   .9.1 / RubyGems的/ installer.rb:533:在   `build_extensions中的块中的救援':   错误:无法构建gem native   延期。   (GEM ::安装:: ExtensionBuildError)

    C:/Ruby192/bin/ruby.exe extconf.rb checking for
     

rb_thread_blocking_region()... *   extconf.rb失败* 无法创建   Makefile可能由于某种原因   缺乏必要的图书馆和/或   头。检查mkmf.log文件   更多细节。你可能需要   配置选项。

对于这类事情,我几乎是一个完整的新手,所以如果有人有任何建议,请帮忙!

3 个答案:

答案 0 :(得分:2)

要安装和编译扩展,有时需要依赖项的库和标头。在这种情况下,您需要MySQL头文件和库才能正确编译。

假设你从RubyInstaller下载了Ruby并安装了Development Kit并且跟着它installation instructions,为了成功安装mysql2 gem,我建议你在我们的Troubleshooting page中阅读这个答案:

  1. 下载MySQL Connector / C
  2. 提取到没有空格的路径
  3. 安装mysql2 gem时,请提供其他选项(gem install mysql2 -v 0.2.10 -- --with-mysql-include=... --with-mysql-lib...
  4. --with-mysql-include选项提供MySQL Connector / C的include目录的路径。 --with-mysql-lib也是如此,但这次指向lib目录。

    不要忘记将libmysql.dll复制到Ruby bin目录。

    希望这有帮助。

答案 1 :(得分:1)

Windows上的本机扩展问题是有两种不同的编译器基础结构:一种基于MS VC及其Visual Studio,另一种基于MinGW(Windows的极简GCC)。

有些Ruby原生扩展可以使用其中任何一个和其他扩展来编译,只支持一个。而且由于他们中的大多数来自某种Unix,因此mingw可能比MSVC更好。

所以你可以尝试安装mingw并用它来编译mysql gem - 有一个名为devkit的特殊包,其中包含一个最小的必要的mingw安装,你只需要放在你的ruby安装中。

我成功使用devkit编译了几个原生扩展:eventmachine,linecache,bson-ext等等。在devkit中你会感觉到更多的回家:-)(来自OSX)

答案 2 :(得分:0)

如果你有@Tomasz提到的devkit设置正确,请确保你检查mysql2 gem版本与windows的兼容性,我过去经历过它导致问题,不得不去安装以前的版本到让它工作。最后我记得v0.2.6是支持windows的版本。