如何将两个构建参数传递给bundle config?

时间:2013-09-06 07:09:09

标签: ruby bundler

我正在尝试配置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本来不错,但我猜他们已经停止这样做了。

2 个答案:

答案 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。希望它有所帮助。

More info