ruby on rails - Можно ли запустить приложение Rails 4.2 на Ruby 2.4?




ruby-on-rails ruby-on-rails-4 (3)

Обновите rails до rails-4.2.8. Это первая версия 4.2.x, которая официально поддерживает ruby-2.4.

Я хочу попробовать приложение Rails 4.2 на Ruby 2.4.

Однако, когда я пытаюсь это сделать, я получаю сообщения об ошибках установки 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, или если сопровождающие js gem решат сделать новую версию не-2.x своего гема?


Похоже, что это не будет возможно в данный момент (хотя это звучит странно).

Смотрите список изменений для драгоценного камня JSON . Json 2.0.0 добавляет совместимость для ruby ​​2.4, но rails 4.2 ограничивает json до 1.x


json Джем имеет исправление на ветке 1.8 . Надеюсь, он скоро выйдет как драгоценный камень, но пока вы можете использовать его прямо в своем Gemfile:

gem 'json', github: 'flori/json', branch: 'v1.8'

Rails также объединил исправление с веткой 4-2-stable примерно через неделю после последнего официального релиза 4.2.x gem. Надеюсь, они скоро выпустят новый драгоценный камень, но это может помочь в вашем Gemfile:

gem 'rails', github: 'rails/rails', branch: '4-2-stable'

Наконец, вам может понадобиться загрузить arel из git-источника:

gem 'arel', github: 'rails/arel', branch: '6-0-stable'

С этими тремя изменениями я смог загрузить наше приложение и запросить базу данных, но затем столкнулся с другими проблемами, связанными с объединением Integer. Похоже, это изменение приведет к возникновению некоторых волн.





ruby-2.4