使用捆绑安装将 rails 应用程序部署到服务器时出错

Errors during deploying rails application to server while using bundle install

我有一个 rails 应用程序,我想将其 运行 放入 docker 容器中。

我已经 运行 捆绑安装..但是出现了这个错误:

Gem::Ext::BuildError: 错误:无法构建 gem 本机扩展。

/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150517-474-  15nbph7.rb extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
In file included from generator.c:1:0:
../fbuffer/fbuffer.h: In function 'fbuffer_to_s':
../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given
 VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                                           ^
../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer without a cast
 VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                ^
Makefile:237: recipe for target 'generator.o' failed
make: *** [generator.o] Error 1

make failed, exit code 2

Gem files will remain installed in     /var/www/test/xyz/vendor/bundle/ruby/2.2.0/gems/json-1.7.7 for inspection.
Results logged to /var/www/test/xyz/vendor/bundle/ruby/2.2.0/extensions/x86_64-linux/2.2.0/json-1.7.7/gem_make.out
An error occurred while installing json (1.7.7), and Bundler cannot continue.
Make sure that `gem install json -v '1.7.7'` succeeds before bundling.

如何在 /vendor/bundle 中安装 json gem?

gem 安装 json -v 1.7.7 --path /vendor/bundle

不工作路径参数是不允许的。 ...

我遇到了同样的错误。这个错误是因为我们使用的 ruby 软件(gems)的版本在某些时候不匹配。

您正在使用 ruby 版本 2.2.1。您的 Gemfile 包含旧版本的 gem,它依赖于 json 版本 1.7.7.

您应该安装以下 ruby 版本:

ruby-1.9.3-p448

消除错误,或者更新与 ruby 版本 2.2.1 兼容的 gem 即可解决问题。