这是我在这里的第一个问题:)
在 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.gem
和gem 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