避免"bundle install"使用预编译的 gem



这是我在这里的第一个问题:)

在 rails 3.2.6(使用 rvm 和 ruby 1.8.7)上,我的 Gemfile 包含两个在使用 bundle install 命令时会导致问题的 gem。

这些 gem 使用以下方法指定:

gem 'libv8', "~> 3.11.8.3"
gem 'therubyracer', '~> 0.11.0beta6'
我的问题是:当运行bundle install命令时,bundler 获取二进制文件(预编译的)gem(libv8-3.11.8.3-x86_64-linux.gem 和 therubyracer-0.11.0beta6-x86_64-linux.gem

),而不是普通源代码(libv8-3.11.8.3.gem 和 therubyracer-0.11.0beta6.gem)。

x86_64版本与我的服务器设置不兼容:包含的动态库使用未知符号(rb_intern2,出于我的旧内存,我可能是错的),这使得应用程序无法加载预编译的 gem。

所以我必须从源包安装 gem。

目前,我必须bundle install,然后从我的~/.rvm/gems/...中删除预编译的宝石,然后gem install ~/tmp/libv8-3.11.8.3.gemgem install ~/tmp/therubyracer-0.11.0beta6.gem,这不是很实用。

有没有办法强制捆绑器获取源代码发布并编译它们?

尝试:

bundle install --without x86_64-linux

x86_64-linux是一个平台,捆绑器/红宝石使用它。

它应该等效于:

gem install libv8 -​-platform ruby

详:

  • http://gembundler.com/man/gemfile.5.html
  • http://guides.rubygems.org/command-reference/#gem_install

最新更新