运行 bundle install 时如何传递 gem 安装的参数?

Posted

技术标签:

【中文标题】运行 bundle install 时如何传递 gem 安装的参数?【英文标题】:How can I pass a parameter for gem installation when I run bundle install? 【发布时间】:2011-07-07 06:32:16 【问题描述】:

我将pg gem 添加到我的gemfile 中

gem 'pg'

当我运行bundle install 时,我得到这个错误:

Installing pg (0.10.1) with native extensions /Users/ben/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/Users/benhartney/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

看来我需要传入这个配置参数

 --with-pg-config=/path/to/pg_config

当我使用bundle install 时,我该怎么做?

【问题讨论】:

【参考方案1】:

您需要像这样设置构建配置选项:

bundle config build.pg --with-pg-config=/path/to/pg_config

更多信息可以在bundle config man page找到

【讨论】:

太棒了!看起来这将它存储在配置中,并将在未来使用。谢谢!【参考方案2】:

在“bundle install”之前运行“bundle config”来设置参数,即:

bundle config build.pg --with-pg-config=/path/to/pg_config
bundle install

【讨论】:

【参考方案3】:

使用 Rails3PostgreSQL。我喜欢这个

>rails new test_app -d postgreSQL
>cd test_app
>mkdir .bundle
>echo "BUNDLE_BUILD__PG: --with-pg-config=/opt/local/lib/postgresql91/bin/pg_config" > .bundle/config
>bundle install

这样您就可以将配置保存在源代码管理中。

用于用户的个人资料

bundle config build.pg --with-pg-config=/opt/local/lib/postgresql91/bin/pg_config

这将创建 ~/.bundle/config 文件。

【讨论】:

除非只有你在应用程序上工作,并且它可能运行的每个地方都有相同的 postgres 配置路径,否则你不应该将这种事情签入你的 scm。它是特定于环境的,并且对于每台机器可能都不相同。这就是为什么通常最好按用户执行此操作。 空闲手指,是的。这是正确的。所以我给了两个选择。你/他的选择,什么最适合。 :-)【参考方案4】:

如果您使用的是 Ruby 2.x 及更高版本,则 thrift 0.9.0 无法使用它构建。见https://issues.apache.org/jira/browse/THRIFT-2219。 Thrift 0.9.2 已修复。

尝试安装: gem install rbhive -v 1.0.3.pre

【讨论】:

以上是关于运行 bundle install 时如何传递 gem 安装的参数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Docker 镜像运行 bundle install 会忽略 bundle config 设置

当通知进入android时如何获取Bundle数据

关于bundle install 的一点补充

无法在 bundle install ruby​​ 上安装 mysql2

理解 Gemfile.lock:删除 Gemfile.lock 然后再次运行 bundle install 可以吗?

Ruby(bundle install,bundle update)FAILS无法安装gems http_parser.rb,eventmachine