是否可以在 Ruby 2.4 上 运行 一个 Rails 4.2 应用程序?
Is it possible to run a Rails 4.2 app on Ruby 2.4?
我想在 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 的维护者决定对 Rails 的非 5.x 版本或 json 的维护者进行更改,否则我是否运气不好? ] gem 决定制作一个新的非 2.x 版本的 gem?
目前看来不可能(虽然听起来很奇怪)。
见Changelog for the JSON gem。 Json 2.0.0 添加了对 ruby 2.4 的兼容性,但 rails 4.2 将 json 限制为 1.x
json
gem 对 1.8
b运行ch 进行了修复。希望它很快会作为 gem 发布,但与此同时,您可以直接在 Gemfile 中使用它:
gem 'json', github: 'flori/json', branch: 'v1.8'
Rails 也 merged a fix 到 4-2-stable
b运行ch 在最新官方 4.2.x
gem 发布大约一周后。希望他们也能尽快发布新的 gem,但这可能对您的 Gemfile 有所帮助:
gem 'rails', github: 'rails/rails', branch: '4-2-stable'
最后,您可能还需要从 git 来源加载 arel
:
gem 'arel', github: 'rails/arel', branch: '6-0-stable'
通过这三个更改,我能够启动我们的应用程序并查询数据库,但随后 运行 进入其他与整数统一相关的问题。看来这个改动要引起一些波澜了。
现在可以使用 rails 4.2.8.rc1(2017 年 2 月 11 日)
升级rails到rails-4.2.8。这是第一个正式支持ruby-2.4
的4.2.x版本
我想在 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 的维护者决定对 Rails 的非 5.x 版本或 json 的维护者进行更改,否则我是否运气不好? ] gem 决定制作一个新的非 2.x 版本的 gem?
目前看来不可能(虽然听起来很奇怪)。
见Changelog for the JSON gem。 Json 2.0.0 添加了对 ruby 2.4 的兼容性,但 rails 4.2 将 json 限制为 1.x
json
gem 对 1.8
b运行ch 进行了修复。希望它很快会作为 gem 发布,但与此同时,您可以直接在 Gemfile 中使用它:
gem 'json', github: 'flori/json', branch: 'v1.8'
Rails 也 merged a fix 到 4-2-stable
b运行ch 在最新官方 4.2.x
gem 发布大约一周后。希望他们也能尽快发布新的 gem,但这可能对您的 Gemfile 有所帮助:
gem 'rails', github: 'rails/rails', branch: '4-2-stable'
最后,您可能还需要从 git 来源加载 arel
:
gem 'arel', github: 'rails/arel', branch: '6-0-stable'
通过这三个更改,我能够启动我们的应用程序并查询数据库,但随后 运行 进入其他与整数统一相关的问题。看来这个改动要引起一些波澜了。
现在可以使用 rails 4.2.8.rc1(2017 年 2 月 11 日)
升级rails到rails-4.2.8。这是第一个正式支持ruby-2.4
的4.2.x版本