我正在尝试配置bundler,以便构建mysql2 gem会将必要的参数传递给extconf。问题是,我无法弄清楚如何传递多个参数。
在我的Gemfile中,我只有:
gem mysql2, '= 0.3.11'
(最新版本存在一些问题,导致根本无法编译它,所以我根据我在另一篇文章中找到的推荐使用0.3.11。)
我试过了:
bundle config build.mysql2 --with-mysql-include=C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\include --with-mysql-lib=C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\lib
我也尝试将参数引用到一个参数中:
bundle config build.mysql2 "--with-mysql-include=C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\include --with-mysql-lib=C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\lib"
我可以告诉它无法正常工作,因为gem向我展示了实际使用的命令行,然后构建失败,因为它无法提供lib):
C:/DevEnv/Tools/Ruby/Ruby200-x64/bin/ruby.exe extconf.rb --with-mysql-include=C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\include
如果我只提供--with-mysql-lib
参数或交换参数的顺序,那么构建会继续查找lib,但会在缺少的include上失败。
如果我直接将相同的标志传递给gem,那就行了。但是,在部署时,这将不会非常好。
其他人如何做到这一点?
PS二进制DLL本来不错,但我猜他们已经停止这样做了。
答案 0 :(得分:1)
对于下一个必须处理这个问题的可怜的傻瓜,答案是很多引用:
bundle config build.mysql2 "--with-mysql-include=\"C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\include\" --with-mysql-lib=\"C:\DevEnv\Tools\Ruby\mysql-connector-c-noinstall-6.0.2-winx64\lib\""
答案 1 :(得分:-1)
bundle config --local --with-mysql-include 'C:\INC_PATH\include'
bundle config --local --with-mysql-lib 'C:\LIB_PATH\lib'
以上内容将配置指令存储在.bundle/config
文件的当前目录中。运行这两个指令后,请尝试正常build install
。希望它有所帮助。