我来自OSX,其中Ruby在90%的时间内完美无瑕地运行。我有一段时间没碰过它,碰巧正好在Windows 7机器上工作。我正在尝试运行一个简单的Ruby on Rails项目,但我似乎无法通过任何数据库设置
我想在mysql上运行,但是当我尝试安装mysql2 gem(通过bundle install
或gem 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文件 更多细节。你可能需要 配置选项。
对于这类事情,我几乎是一个完整的新手,所以如果有人有任何建议,请帮忙!
答案 0 :(得分:2)
要安装和编译扩展,有时需要依赖项的库和标头。在这种情况下,您需要MySQL头文件和库才能正确编译。
假设你从RubyInstaller下载了Ruby并安装了Development Kit并且跟着它installation instructions,为了成功安装mysql2 gem,我建议你在我们的Troubleshooting page中阅读这个答案:
gem install mysql2 -v 0.2.10 -- --with-mysql-include=... --with-mysql-lib...
)为--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的版本。