我想在 Ruby 2.4 上尝试运行一个 Rails 4.2 应用。
但是,当我尝试这样做时,出现了有关 json gem 版本 1.8.3 安装失败的错误。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
/Users/agrimm/.rbenv/versions/2.4.0-rc1/bin/ruby -r ./siteconf20161223-91367-cql0ne.rb extconf.rb
creating Makefile
current directory: /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR=" clean
current directory: /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
generator.c:861:25: error: use of undeclared identifier 'rb_cFixnum'
} else if (klass == rb_cFixnum) {
^
generator.c:863:25: error: use of undeclared identifier 'rb_cBignum'
} else if (klass == rb_cBignum) {
^
2 errors generated.
make: *** [generator.o] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3 for inspection.
Results logged to /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-14/2.4.0-static/json-1.8.3/gem_make.out
An error occurred while installing json (1.8.3), and Bundler cannot continue.
Make sure that `gem install json -v '1.8.3'` succeeds before bundling.
我认为这是由于Fixnum和Bignum统一为Integer所致。
如果我在Gemfile中添加了一个json版本必须为2.0.0的限制,则会提示Rails 4.2需要json ~> 1.7,不支持2.0.0。
除非Rails的维护者决定更改为非5.x版本,或者json gem的维护者决定制作新的非2.x版本,否则我是否就没戏了呢?
1.8.5
)和arel(6.0.4
)版本。现在我们正在等待一个新的rails4.2.x
版本发布。 - James Healy